2012-01-13 54 views
0

假設我有兩個模型EventPersonRails:模擬這個has_and_belongs_to_many協會的最佳方式是什麼

許多人蔘加一個活動,一個人也可以參加很多活動。

class Event < ActiveRecord::Base 
    has_and_belongs_to_many :people 
end 

class Person < ActiveRecord::Base 
    has_and_belongs_to_many :events 
end 

create_table "events_people", :id => false, :force => true do |t| 
    t.integer "event_id" 
    t.integer "person_id" 
end 

的問題是,一個事件是由一個或多個呈現speakers。因此,對於某個特定的event,我們應該有people參加該活動,以及一個或多個speakers,他們當然也是人。

我該怎麼做?謝謝。

回答

1

試試這個:

class Event < ActiveRecord::Base 
    has_and_belongs_to_many :people 
    has_and_belongs_to_many :speakers, :class_name => "Person" 
end 

而且你將有一個events_speakers連接表,將匹配event_idperson_id(這將指向中的ID people表)。

+0

我還沒有嘗試過自己的代碼,但是從我如何理解activerecord關聯的導軌指南來看,它對我來說在'events_speaker'表中是'speaker_id',而不是'person_id'是有意義的。這是因爲HABTM協會尋找演講者。 – rocketscientist 2012-01-15 06:43:00

相關問題