【问题标题】:cancan rails code understandingcancan rails 代码理解
【发布时间】:2016-02-03 13:09:40
【问题描述】:

我无法调试一些 cancancan 代码并寻求帮助。

can :update, Message do |m|
  false
end

但奇怪的是cancancan总是返回true,我无法调试问题。这是一小段相关的can​​cancan代码

   rule.rb
    def matches_conditions?(action, subject, extra_args)
         if  
           ...
          elsif @block && !subject_class?(subject)
            @block.call(subject, *extra_args)
          end
        end

我可以看到@block.call 已完成并且它返回 false,但是ability.rb 中的这段代码对我来说没有意义

match = subject.map do |subject|
        relevant_rules_for_match(action, subject).detect do |rule|
          rule.matches_conditions?(action, subject, extra_args)
        end
      end.compact.first

      match ? match.base_behavior : false

base_behaviour 在初始化后从未设置,并且在初始化时设置为 true,规则的 base_behaviour 将如何返回 false。

辅助函数被调用

ability = Ability.new(user)
ability.can? :update ,@message

【问题讨论】:

  • 您在查看can?(:update, Message) 还是can?(:update, @message)
  • 每次更改ability.rb 时都必须重新启动服务器。你也可以粘贴代码,你正在使用can?帮助方法。
  • @kddeisz 我已经更新了问题。谢谢
  • @HassanAkram 我已经更新了问题。
  • 知道有一个压倒一切的能力。谢谢

标签: ruby-on-rails cancan cancancan


【解决方案1】:

知道有一个压倒一切的能力

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2015-02-25
    相关资源
    最近更新 更多