2017-04-05 9 views
0

初心者質問です!多くのコントローラの方法では、私はそれは、オブジェクトがが保存されている、またはこのは、オブジェクトを保存しないかどうかをチェックして、この場合railsでは、 "if @ user.save"は実際にオブジェクトを保存しますか、それとも単なるチェックですか?

@user.doSomething 
if @user.save 
    #flash or redirect something 
else 
    #flash or redirect something 

のようなものを参照してください、それはを働いたかどうかをチェックしますか?

+2

はい、保存します。 –

+1

はい、保存します。しかし、あなたはそのような質問をするべきではありません、代わりにいくつかの良いレールのチュートリアルを通過する必要があります。 :) –

+0

私はもちろん聞いていないことを望む。実際にここで何が起きているのか(ほとんど使用されていないので)、私の質問です! – Teresa

答えて

1
if @user.save 

これは、それが有効かどうオブジェクトを保存し、@userは、以下の例を参照してください

に保存されていない場合@userが正常に

  • falseを保存している場合

    • trueを返します。

      @user = User.new 
      
      @user.save 
      #=> false 
      
      @user = User.new(email: '[email protected]', password: 'foobar123') 
      
      @user.save 
      #=> true 
      
  • +2

    "オブジェクト@userが有効でない場合はfalse" - いいえ、ユーザーがメソッド名が示すとおり、保存されませんでした。検証エラーは保存を妨げる可能性がありますが、他のことも可能です。 –

    +1

    混乱を避けるために編集しました –

    +0

    ええ、今より良い。 –

    1

    また、のような何かをすることができます:それが有効である場合は、ユーザーが保存されます

    def edit 
        @user = User.find(params[:id]) 
        @user.assign_attributes(params[:user]) 
    
        if @user.valid? 
        @user.save! 
        redirect 
        else 
        render 
        end 
    end 
    

    これを、しかし、それは他のいくつかの理由に起因して保存することができない場合は、例外が発生します。