我有一個用戶表和一個員工表。他們有一對一的關係。 當我創建時間記錄時,我想自動分配當前員工。 我可以訪問的是current_user。 員工表有一個外鍵(user_id)。RoR需要員工的正確編碼 - 用戶
我的形式嘗試這一點 - 但它沒有工作:
<%= f.hidden_field :employee_id, :value => current_user.employee.employee_id %>
我需要一個外鍵添加到用戶表= EMPLOYEE_ID?
感謝
我有一個用戶表和一個員工表。他們有一對一的關係。 當我創建時間記錄時,我想自動分配當前員工。 我可以訪問的是current_user。 員工表有一個外鍵(user_id)。RoR需要員工的正確編碼 - 用戶
我的形式嘗試這一點 - 但它沒有工作:
<%= f.hidden_field :employee_id, :value => current_user.employee.employee_id %>
我需要一個外鍵添加到用戶表= EMPLOYEE_ID?
感謝
所以,你的員工的模型
belongs_to :user
和您的用戶模型
has_one :employee
是嗎?
如果是的話,它可能是作爲隱藏字段的值更改爲
current_user.employee.id
(而不是current_user.employee.employee_id)一樣簡單。
如果這不起作用,您可以準確地發佈您構建一對一關係的方式嗎?
工作 - 謝謝 – Reddirt
最好的辦法可能是在控制器中設置employee_id
。如果@entry
是模型的實例(稱之爲Entry
),您正在構建的形式,可考慮做這樣的事情:
# in controller +new+ method:
@entry.employee_id = current_user.employee.id
隱藏字段的值然後應該自動地填充:
<%= f.hidden_field :employee_id %>
當然,你甚至可能根本不需要在表單中設置它。假設表單被髮布到某個地方的create
方法,爲什麼不在那裏設置變量?
# in controller +create+ method:
@entry = Entry.new(params[:entry])
@entry.employee_id = current_user.employee.id
if @entry.save
# do stuff
end
正如你可能需要至少檢查ID反正,以確保沒有搞笑的業務正在發生,這可能是要走的路。
不,你不需要用戶表中的employee_id。你遇到了什麼錯誤?您是否正確設置了時間記錄與員工之間的關係? – tmaximini
這與這個問題無關,但是您有什麼理由使用員工表?由於它只是一對一的關係,所以我並不認爲增加額外的查詢只是爲了得到'current_user.employee'。有什麼能夠阻止你在用戶表上擁有員工屬性嗎? – nzifnab