Вы смотрите на отношения между двумя таблицами: "Имеет и принадлежит многим" (HABTM).Прочитайте об отношениях HABTM в руководствах по Rails здесь: http://edgeguides.rubyonrails.org/association_basics.html#has_and_belongs_to_many-association-reference
Сначала вам нужно сгенерировать миграцию, которая будет выглядеть примерно так:
class AddActorFilmTable < ActiveRecord::Migration
def self.up
create_table :actors_films, :id => false do |t|
t.integer :actor_id, :null => :false
t.integer :film_id, :null => :false
end
add_index :actors_films, [:actor_id, :film_id], :unique => true
end
def self.down
drop_table :actors_films
end
end
, а затем укажите в ваших моделях:
class Actor < ActiveRecord::Base
has_and_belongs_to_many :films
end
class Film < ActiveRecord::Base
has_and_belongs_to_many :actors
end
Это позволит вам использовать все дополнительные методы Rails для этого типа отношений.Чтобы использовать это в форме, вы можете следовать RailsCast 17: HABTM Checkboxes - хотя он старый, он все равно должен применяться.Кроме того, вы можете использовать драгоценный камень, такой как Простая форма , чтобы легко сгенерировать ассоциации для вас, например, так:
form_for @actor do |f|
f.collection_check_boxes :film_ids, Film.all, :id, :name
end