Ruby on rails 坎坎未定义方法';用户';问题
我在cancan控制器中定义用户权限时遇到问题: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
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,有时很难找到适合树木的木材。嗨,谢谢你的回答。这非常有效。我刚接触铁轨,有时很难找到适合树木生长的木材。