2011-08-08 41 views
0

下面是一個例子:你如何使has_many關聯唯一?

Class Store < ActiveRecord::Base 
    has_many :employees 
end 

現在,當我創建像這樣的員工:

employee = Employee.new(attributes) 

,然後兩家店,像這樣:

store1 = Store.new(employees: [employee]) 
store2 = Store.new(employees: [employee]) 

它改變對員工的STORE_ID存儲2,擺脫與store1的關聯。如何確保只有一名員工可以分配到一家商店?

+1

你想在這裏發生什麼?如果您嘗試將員工分配給商店(如果他已被分配到另一個員工),您是否希望提出錯誤? –

+0

是的,這是正確的。 – Jeff

+0

你是否曾希望員工能夠改變商店(就像他們轉移一樣)? –

回答

2

嘗試使用.build語法:在創建行動(我假設這是從僱員的新的行動來了,該商店已經創建)

所以做這樣的事情:

#this is the id of whatever store... maybe its a nested resource so it would be something like 
#@store = Store.find(params[:store_id]) 
@store = Store.find(id) 
@employee = @store.employees.build(params[:employee]) 

另外請確保您的員工模型中有belongs_to。

+0

這實際上回答了我的下一個問題,但我也想保證安全,並確保沒有其他人可以像我這樣做創建這些記錄。這會有非常糟糕的後果。 – Jeff

+0

看起來你需要某種授權解決方案。查看CanCan的簡單和可擴展性。 – Msencenb