0

所以首先我的模型結構:只允許特定用戶訪問模式

公司擁有衆多用戶,用戶所屬公司

MODEL1屬於公司,公司擁有衆多MODEL1

MODEL2屬於公司有很多model2

對於model1的索引行動,我只是做一些像

@model1 = current_user.company.model1s # i use devise for auth 
在我的控制器

我把第一

before_filter :authenticate_user! 

的問題是,(當然)show動作顯示每個用戶一個模型的每一個記錄記入日誌。

限制model1和model2記錄僅限屬於model1和model2所屬公司的用戶的最佳選擇是什麼?

謝謝!

回答

1

在一般情況下,請使用插件或寶石,例如(無特定順序)CanCanClearance或其他here之一。對於它的價值,我過去成功使用acl9

大多數這些解決方案都在控制器/視圖級別實現授權控制,並以這種方式控制對特定模型實例(數據庫中的AKA行)的訪問。

另請參閱this question,其中涵蓋從最佳角度來看的話題。

最後,如果你想推出自己的,最簡單的辦法就是加入由model1model2在你的查詢companyuser。從您的描述中,model1model2有一個company_id列,並且company有一個user_id列。這取決於你如何在你的模型建立關聯,你可以這樣做:

Model1.joins(:company => :user).where(:users => {:id => 1}) 

或(假設一個適當的認證框架):

Model1.joins(:company => :user).where(:users => {:id => current_user.id}) 
+0

感謝你爲這個職位。現在與康康一起工作到目前爲止效果很好。 – choise 2011-12-19 16:15:05

相關問題