2014-01-08 121 views
0

在導軌3我有2個模型:用戶,事件。用戶has_many事件通過events_staffs和事件has_many事件通過events_staffs。導軌3協會沒有表

class Staff < ActiveRecord::Base 
    has_many :events_staffs 
    has_many :events, through: :events_staffs 
end 

class Event < ActiveRecord::Base 
    has_many :events_staffs, dependent: :destroy 
    has_many :staffs, through: :events_staffs 
end 

我希望一個事件有一個作者和一些成員,其作者和成員是員工表的記錄。 我希望我能在控制檯是這樣做的:

e=Event.first #ok it works 
e.author=Staff.first 
e.members=Staff.all - [Staff.first] 

是可能做到的呢?

SOLUTION

#Event model 
    has_many :events_staffs, dependent: :destroy 
    has_many :members, through: :events_staffs, source: :staff #http://stackoverflow.com/a/4632456/1066183 

    #http://stackoverflow.com/a/13611537/1066183 
    belongs_to :author,class_name: 'Staff' 


#migration: 
class AddForeignKeyToEventsTable < ActiveRecord::Migration 
    def change 
    change_table :events do |t| 
     t.integer :author_id 
    end 
    end 
end 
+0

是的,它給予你描述的作家,成員等的關係 –

回答

1

是的,很容易。一個AUTHOR_ID整數列添加到您Event模型,然後更新您的代碼如下:

class Event < ActiveRecord::Base 
    has_many :events_staffs, dependent: :destroy 
    has_many :staffs, through: :events_staffs 

    belongs_to :author, class_name: 'Staff' 
end 

至於成員,我會創造另一個加入類似於您staffs_events表的表,但對成員。在該模型中,您需要執行與指定成員的class_name的Event相同的belongs_to關聯。

+0

好的,謝謝。是可以使用你的解決方案,但沒有編輯數據庫? – user1066183

+0

否 - 您需要一個新列來跟蹤您所指的作者的ID。 – Jon