0

私のアプリでは、通常のユーザーがボタンをクリックしてスーパー ユーザーになれるはずです。コンソールで、ユーザーを取得して を実行すると、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
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 に答える