我有一張僱員(id,名稱,角色)和關係表老闆(employee_id,superior_id; foreign_keys到employees.id僱員)的表。限制活動記錄查找的結果
現在,如果員工登錄,我只想顯示他/她的員工;一個管理員(角色=管理員)可以看到所有員工。
對於管理員很容易:
Employee.find(:all) #to list them
Employee.find(params[:id] #to find one
有沒有一種簡單的方法,以限制只是我的員工的結果?
像加總條件
where employees.id in
(select id from bosses where superior_id = #{User.current_user.employee})
如果角色不是管理。
附加註釋
你能想到一個更通用的解決方案,其中每一個呼叫活動記錄的查找方法,它會檢查CURRENT_USER,只返回元素的時候,他/她應該看到了什麼?
是的,這至少解決了它一次,但實際上我仍然在尋找一個更一般的解決方案。就像每次我打電話查找時,都會限制用戶訪問他/她的人。 – Beffa 2009-07-30 12:35:00
命名示波器也許,http://railscasts.com/episodes/108-named-scope – 2009-07-30 13:20:13
你給我看了正確的道路。我使用了命名範圍中的代碼爲自己寫了一個範圍 – Beffa 2009-07-30 14:06:41