Digamos que tengo dos modelos, Director y Película, y un modelo de tercera combinación llamado Direcciones. Se definen como tales:Creando o actualizando asociación con has_many: a través de
Película:
class Movie < ActiveRecord::Base
has_many :directions
has_many :directors, :through => :directions
end
Directora:
class Director < ActiveRecord::Base
has_many :directions
has_many :movies, :through => :directions
end
llegar:
class Direction < ActiveRecord::Base
belongs_to :movie
belongs_to :director
end
Cuando Creo una película. Deseo poder crear un director con la información suministrada (nombre e imdb_id) o encontrar un director existente basado en imdb_id y asociarlo con el registro de la película.
Esencialmente, no quiero borrar o editar un director, nunca. Solo quiero poder crear un nuevo director si no existe en base a su imdb_id, o asociarme con un director preexistente cuando estoy creando o editando una película.
Mi pregunta es, ¿cómo puedo vincular todo esto en la vista/controlador?
accepts_nested_attributes_for funciona bien, excepto en realidad se puede editar el nombre del director cuando se está editando una película de la que no quiero. No tengo ningún interés en actualizar/destruir a los directores reales, solo las asociaciones.
Gracias, eso me lleva a la mitad. Eventualmente tendré bastantes directores (en los cientos), por lo que mostrarlos no funcionará, pero puedo arreglarlo con alguna magia de búsqueda AJAX que está bien. Tengo un caso de uso específico en mente que no estoy seguro de cómo implementarlo. Digamos que creo una película con Steven Spielberg como director. Entonces me doy cuenta de que no lo dirigió en realidad, pero James Cameron lo hizo y aún no tengo a James Cameron en el DB. Con su solución podría desmarcar a Steven Spielberg, pero ¿cómo agregaría a James Cameron y crearía el registro y la asociación del Director DB? Gracias! –