2010-02-11 35 views
-1

我有3種型號改寫協會導致

用戶,公司和角色

用戶belongs_to的角色 用戶擁有,屬於許多公司 角色HAS_ONE用戶

直通這個協會,我可以這樣做:
User.companies < - 我得到了用戶擁有的所有公司
User.role < - 我得到了用戶所屬的角色

我現在在想,當一個用戶有role_id == 0(admin)時,公司應該返回所有公司(Company.all)。要做到這一點,我想覆蓋公司的方法,如果用戶有role_id == 0,我會返回Company.all,否則我打電話超級。那是對的嗎?如果是的話,我應該如何實現這個代碼? 直接在我的用戶模型中?我應該只擴展數組嗎?

回答

1

我想說作出新的方法,companies_accessible,它決定哪些公司用戶具有訪問權限。

def companies_accessible 
    role_id == 0 ? Company.all : companies 
end 

無需污染現有的方法,特別是如果你以後需要確定哪些公司的管理確實確實自己。

+0

它的工作原理,但那麼我將不得不改變它已經準備好的很多代碼。 – 2010-02-11 15:11:12

+0

這對於理智的代碼來說可能是值得的,並且可能不會超過跨項目查找和替換(當然,手動檢查所有替換)。如果你使用IDE,它可能就是它。如果沒有,有一些命令行工具可以爲你做到這一點。 – Matchu 2010-02-11 15:21:25

+0

我不會採取這種方法。我會推翻這些公司並祈禱。無論如何,你獨自回答,所以我會選擇你的答案。 – 2010-02-11 15:27:47