我很新的軌道,這是我第一次真正使用authlogic + acl9。我遵循這兩個插件的默認安裝步驟。acl9找到只是模型對象滿足object.accepts_role?(role_name,current_user)
到目前爲止,一切都很正常,但我有麻煩找到這個問題的一個優雅的解決方案:
比方說,我有一個叫產品模型類。當創建一個新的產品對象我指定CURRENT_USER作爲所有者:
current_user.has_role! :owner, @product
我註冊了第二個用戶,並確保這部分工作。
在產品控制器我有一個指數的方法,簡單地返回所有產品:
def index
@products = Products.all
end
我的問題是:我如何呼籲產品find方法才能得到的只是那些產品,其中CURRENT_USER是主人? 所以我使用acl9接口,這將意味着:
@product.accepts_role?(:owner, current_user)
一種可能性很可能會先檢索所有的產品,然後創建只是CURRENT_USER那些新的陣列。所以可能是這樣的:
@products = []
products = Products.all
products.each do |p|
@products << p if p.accepts_role?(:owner, current_user)
end
這個解決方案看起來很浪費。那麼,正確的做法是什麼?
謝謝大家!
您不能保證產品的第一個':owner'角色將成爲產品的角色,也許他們也擁有其他東西,在這種情況下'產品'將是零。 – smathy 2015-01-22 22:01:04
另外,'Role'上不會有'產品'方法 – smathy 2015-01-22 22:03:29