2017-02-20 15 views
0

По сути, мы имеем две модели и присоединиться столПоддерживает ли рельсы варианты has_and_belongs_to_many?

class Guests < ActiveRecord::Base 
    has_and_belongs_to_many :events 
end 

class Event < ActiveRecord::Base 
    has_and_belongs_to_many :guests 
end 

class CreateJoinTableGuestsEvents < ActiveRecord::Migration 
    def change 
    create_join_table :guests, :events do |t| 
     t.index [:guest_id, :event_id] 
     t.index [:event_id, :guest_id] 
    end 
    end 
end 

То, что я действительно хочу иметь это:

class Guest < ActiveRecord::Base 
    has_one :event 
end 

class Event < ActiveRecord::Base 
    belongs_to :guests 
end 

Возможно ли он использовать таблицу присоединиться?

ответ

1

Если вы действительно хотите has_one и принадлежит, вам не следует использовать таблицу соединений. Достаточно добавить guest_id к событию.

0

Построение ассоциации one_to_many. вот как это будет выглядеть.

class Guest < ActiveRecord::Base 
    belongs_to :event 
end 

class Event < ActiveRecord::Base 
    has_many :guests 
end 

вы можете получить гость события на event.guests и получить событие, когда пользователь является порыв будет guest.event