[英]only allow specific users to access model
所以首先我的模型結構:
公司有很多用戶,用戶屬於公司
model1屬於公司,公司有很多model1
model2屬於公司,公司有很多model2
對於model1的索引操作,我只是做類似
@model1 = current_user.company.model1s # i use devise for auth
在我的控制器中,我首先
before_filter :authenticate_user!
問題是,show動作(當然)顯示了每個登錄用戶的每個模型記錄。
將model1和model2記錄僅限制為屬於model1和model2所屬公司的用戶的最佳選擇是什么?
謝謝!
在一般情況下,請使用插件或gem(例如(無特定順序) CanCan , Clearance或此處的其他一個)。 對於它的價值,我過去已經成功使用過acl9 。
這些解決方案中的大多數都在控制器/視圖級別實現授權控制,並以此方式控制對模型的特定實例(數據庫中的AKA行)的訪問。
另請參閱此問題 ,該問題從最佳角度討論了該主題。
最后,如果要自己滾動,最簡單的解決方案是在查詢中將model1
和model2
到company
和user
。 根據您的描述, model1
和model2
具有company_id
列,而company
具有user_id
列。 根據您在模型中建立關聯的方式,可以執行以下操作:
Model1.joins(:company => :user).where(:users => {:id => 1})
或(假設使用適當的身份驗證框架):
Model1.joins(:company => :user).where(:users => {:id => current_user.id})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.