0

在我的应用程序中,普通用户应该能够点击一个按钮并成为超级用户。在控制台中,我可以获取一个用户然后执行user.super=trueuser.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
4

1 回答 1

2

如评论中所述,您可能在验证时遇到问题。

您可以完全跳过验证(毕竟您只想让他们成为超级用户)

current_user.update_attribute(:super, true) # please note, singular!

或者你也可以让用户知道发生了什么样的验证错误(参见 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 有一个面向对象的含义,应该避免...

于 2013-03-01T17:30:47.040 回答