我对 Rails 很陌生,这是我第一次真正使用 authlogic + acl9。我遵循了两个插件的默认安装步骤。
到目前为止,一切都很好,但我很难为这个问题找到一个优雅的解决方案:
假设我有一个名为 Products 的模型类。创建新产品对象时,我将 current_user 分配为所有者:
current_user.has_role! :owner, @product
我注册了第二个用户并确保这部分有效。
在产品控制器中,我有一个索引方法,只需返回所有产品:
def index
@products = Products.all
end
我的问题是:我如何调用 Products 上的 find 方法来获取那些 current_user 是 :owner 的产品?所以我使用 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
这个解决方案似乎很浪费。那么正确的方法是什么?
谢谢大家!