gpt4 book ai didi

ruby-on-rails - Rails CanCan 条件哈希不起作用

转载 作者:行者123 更新时间:2023-12-01 05:37:22 25 4
gpt4 key购买 nike

我有一个简单的 Ability.rb 设置如下:

if user.role? :super_admin
can :manage, :all
elsif user.role? :registered
can :review, [Card, Deck], :visible => true
end

alias :review => :index, :list, :show, :to . Card 和 Deck 表都有带有 bool 选项的可见列。目前表中的每个对象都有 :visible => false .因此,我预计具有注册角色的用户将无法 :review任何对象,但事实并非如此。 Controller 级别的限制工作正常(无法访问编辑和删除),但我似乎无法使用条件散列来限制资源的查看。有什么想法吗?

编辑:我有 authorize_resource在两个 Controller 中。使用 Ruby 1.9.2、Rails 3.1 和 CanCan 1.6.7。我正在使用设计 1.4.9 进行身份验证。 MySQL是数据库。

编辑:
嗯..我想出了一种根据条件限制资源的方法。尽管我在所有 Controller 中都有 authorize_resource(并且它可以限制对方法的访问),但我不得不添加 authorize!到我想限制资源的方法。例如,限制条件为 :visible => true 的 Decks 的 show 操作。 ,我只好加 authorize!像这样:
def show
@deck = Deck.find(params[:deck_id]
authorize! :review, @deck
end

老实说,我对这个解决方案并不满意,因为我不明白为什么 authorize_resource行不通。我很想看到一个解释。

最佳答案

也许你可以看到这个话题:
Cancan condition

我和你有同样的问题,我通过那个话题解决了,
我换了 authorize_resource来自 load_and_authorize_resource

关于ruby-on-rails - Rails CanCan 条件哈希不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870339/

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