gpt4 book ai didi

ruby-on-rails - acl9 只找到满足 object.accepts_role?(role_name, current_user) 的模型对象

转载 作者:行者123 更新时间:2023-12-04 03:35:52 25 4
gpt4 key购买 nike

我对 Rails 很陌生,这是我第一次真正使用 authlogic + acl9。我遵循了两个插件的默认安装步骤。

到目前为止,一切都很好,但我很难为这个问题找到一个优雅的解决方案:

假设我有一个名为 Products 的模型类。创建新产品对象时,我将 current_user 分配为所有者:

current_user.has_role! :owner, @product

我注册了第二个用户并确保这部分有效。

在产品 Controller 中,我有一个索引方法,只需返回所有产品:
def index
@products = Products.all
end

我的问题是:我如何调用 Products 上的 find 方法来获取那些 current_user 是 :owner 的产品?
所以我使用 acl9 接口(interface)意味着:
@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

这个解决方案似乎很浪费。那么正确的方法是什么?

谢谢大家!

最佳答案

如何在一个查询中完成所有操作:

@products = Product.all.select { |p| p.accepts_role?(:owner, current_user)}

但这个想法仍然是你自己提出的

关于ruby-on-rails - acl9 只找到满足 object.accepts_role?(role_name, current_user) 的模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com