1

Railsコントローラーのコードで

def create
  @post = Post.new(params[:post])
  @post.random_hash = generate_random_hash(params[:post][:title])
  if @post.save
    format.html { redirect_to @post }
  else
    format.html { render action: "new" }
  end
end

定義の最初の 2 行を入れるか入れif @post.saveないか? 投稿が保存されていない場合、作成された Post オブジェクトPost.newはデータベースに保存されますか?

4

1 に答える 1

4
  1. @post.save定義の最初の 2 行を ifまたは notの中に入れる必要がありますか?

    確かにそうではありません。提案どおりに次のように変更した場合:

    def create
      if @post.save
        @post = Post.new(params[:post])
        @post.random_hash = generate_random_hash(params[:post][:title])
        format.html { redirect_to @post }
      else
        format.html { render action: "new" }
      end
    end
    

    それでは全然うまくいきません。@post呼び出すことはありませんsave

  2. 投稿が保存されていない場合、Postによって作成されたオブジェクトPost.newはデータベースに保存されますか?

    もちろん違います。それが保存の機能です。オブジェクトをデータベースに保存します。オブジェクトまたはリターン(検証が失敗したために発生する) を呼び出さない場合save、オブジェクトはデータベースに保存されませんでした。メモリ内に新しいオブジェクトを作成するだけで、データベースにはまったく影響しません。PostsavefalsePost.newPost

于 2012-10-13T00:57:25.420 に答える