在我的应用中,普通用户应该能够点击按钮并成为超级用户。在控制台中,我可以获得一个用户然后执行user.super=true
,user.save
并且它可以正常运行。我将下面的代码放在我的控制器中,但它会闪烁“那不起作用”错误,而不是成功更改用户。我如何解决它?
def become_super
user = current_user
user.super = true
if user.save
flash[:success] = "You are super"
else
flash[:error] = "That didn't work"
redirect_to apply_path
end
答案 0 :(得分:2)
如评论中所述,您可能会遇到验证问题。
您可以完全跳过验证(毕竟您只想让他们成为超级用户)
current_user.update_attribute(:super, true) # please note, singular!
或者您也可以让用户知道发生了哪种验证错误(see ActiveRecord:Error)
user.super = true
if user.save
# as before
else
flash[:error] = "Please fix your user record first, there are " +
"validation errors: #{user.errors.full_messages.join(", ")}"
redirect_to apply_path
# Note: Do not use this pattern for normal CRUD actions!
end
请注意,super有OO含义,应该避免......