0

私はまだレールに慣れていません、そしてそれの多くは私が慣れているものではありません。これについての私の答えが見つかりませんでしたし、実際に何を検索すればよいかわからないので、助けてください。

これは:

def create
    @note = Note.new(params[:note])
    @note.creator = current_user
    if member_of_project? @note.project_id
      if @note.save
        redirect_to @note, :notice => "Successfully created note."
      else
        render :action => 'new'
      end
    else
      render :action => 'new'
    end
  end

に等しい:

def create
    @note = Note.new(params[:note])
    @note.creator = current_user
    if member_of_project? @note.project_id && @note.save
      redirect_to @note, :notice => "Successfully created note."
    else
      render :action => 'new'
    end
  end

???

私が本当に知りたいのは、2番目のものがを呼び出すかどうかです@note.save

4

2 に答える 2

3

Rubyは、他の多くの言語と同様に、「短絡評価」を実装します。これは、第1オペランドが真の場合にのみ、第2オペランドが「and」で評価されることを意味します。ルビーの詳細については、こちらをご覧ください:http ://www.linuxtopia.org/online_books/programming_books/ruby_tutorial/Ruby_Expressions_Defined_And_Or_and_Not.html

于 2012-11-07T20:13:41.827 に答える
0

あなたがそれを試し、失敗したと仮定します。はい、条件の2番目の部分に到達した場合は、saveメソッドを実行する必要があります。

このような条件を使用する場合は、コードを正しく実行するために括弧で囲む必要があることがわかりました。

 if (member_of_project? @note.project_id) && (@note.save)

そしてもちろん、「あなたのテストはあなたに何を教えてくれますか?」と聞かなかったら、私はどのような開発者になるでしょう。

于 2012-11-07T20:06:48.413 に答える