Мы предполагаем, что кто-то (создатель) может создать встречу.Создатель может быть клиентом или контактом.
Для этого вам сначала понадобятся столбцы "creator_type" и "creator_id" в таблице собраний, поэтому добавьте миграцию, используя script/rails generate migration AddTypeToMeetings
Затемотредактируйте файл миграции следующим образом:
class AddTypeToMeetings < ActiveRecord::Migration
def self.up
add_column :meetings, :creator_id, :integer
add_column :meetings, :creator_type, :string
end
end
Во-вторых, вы должны адаптировать свои модели:
meeting.rb
class Meeting < ActiveRecord::Base
# polymorphic association
belongs_to :creator, :polymorphic => true
end
client.rb
class Client < ActiveRecord::Base
has_many :meetings, :as => :creator
end
contact.rb
class Contact < ActiveRecord::Base
has_many :meetings, :as => :creator
end
Как использовать:
@my_meeting = Meeting.new
@my_meeting.creator = @my_client
# or if you want a contact:
@my_meeting.creator = @my_contact
Вы можете прочитатьподробнее о полиморфных ассоциациях здесь: