2017-02-20 54 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和belongs_to,你不应该使用连接表。将事件添加到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