Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 坎坎未定义方法';用户';问题_Ruby On Rails_Cancan - Fatal编程技术网

Ruby on rails 坎坎未定义方法';用户';问题

Ruby on rails 坎坎未定义方法';用户';问题,ruby-on-rails,cancan,Ruby On Rails,Cancan,我在cancan控制器中定义用户权限时遇到问题: class Ability include CanCan::Ability def initialize(user) user ||= User.new # guest user if user.role? :admin can :manage, :all else can :read, :all can :update, User do |user| user.tr

我在cancan控制器中定义用户权限时遇到问题:

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user

    if user.role? :admin
      can :manage, :all
    else
    can :read, :all
    can :update, User do |user|  
      user.try(:user) == user  
    end
    end
  end
end
这会导致出现命名错误:

undefined method `user' for #<User:0x000001050914c8>
的未定义方法“user”#
当我尝试编辑/更新用户时。其他一切似乎都很好

谢谢你的帮助

鲍勃

问题是

user.try(:user) == user
基本上正在尝试执行
user.user==user

看起来您正在尝试仅在用户实例是登录用户时才允许用户更新用户模型属性

请尝试以下方法:

can :update, User, :id => user.id
这表示“当
@User.id
当前的\u User.id
相同时,可以更新用户模型”

块表示法不明确,因为块变量
|user
与传递到能力模型的
user
相同


对于那些仍然掌握Ruby的人来说

can :update, User, :id => user.id
同:

can(:update, User, { id: user.id })
问题是

user.try(:user) == user
基本上正在尝试执行
user.user==user

看起来您正在尝试仅在用户实例是登录用户时才允许用户更新用户模型属性

请尝试以下方法:

can :update, User, :id => user.id
这表示“当
@User.id
当前的\u User.id
相同时,可以更新用户模型”

块表示法不明确,因为块变量
|user
与传递到能力模型的
user
相同


对于那些仍然掌握Ruby的人来说

can :update, User, :id => user.id
同:

can(:update, User, { id: user.id })

什么是
user.try(:user)==user
for?在您的
user
模型中是否有名为
user
的方法?什么是
user。请尝试(:user)=user
?在您的
user
模型中是否有名为
user
的方法?您好,谢谢您的回答。这非常有效。我刚接触rails,有时很难找到适合树木的木材。嗨,谢谢你的回答。这非常有效。我刚接触铁轨,有时很难找到适合树木生长的木材。