2017-06-14 6 views
1

は、レールのチュートリアルを作業すると、それはのform_forを使用してフォーム(@user)を構築する場合、Railsはuser.new_record @ POSTを使用している場合?フォームヘルパーからフォームをビルドする前に、レールがデータベースに接触していませんか?

を語りますかそれが真であればPATCHを返します。

それで、htmlをレンダリングすると、データベースに当たっているのですが、いつそれが正確に行いますか?直前に何が来ますか?

+0

レコード*、私はそれがDBをヒットすると信じています。 – Pavan

答えて

1

いや、それはデータベースにヒットしない、コンソールで自分自身のためにチェックすることができますが、

old = User.last 
new = User.new 

のみoldヒットデータベース、newはちょうどクラスUserのオブジェクトを作成し、一方、行きましょうフォームに@userオブジェクトを渡す際に、さらに..

old.new_record? 
#=> false 
new.new_record? 
#=> true 

参照は、クエリがデータベースにヒットされていない、同様に、それはnew_record?ためではなく、デシベルを押すことなくチェックします。

だから、どうやってそれが決まりますか?私の野生の推測では、それはチェックするid/primary_keyではないnil

+0

@SergioTulentsevは私の*野生の推測*にコメントしたいですか? :) –

1

このオブジェクトがまだ保存されていない場合、つまりオブジェクトがデータベースにまだ存在しない場合はtrueを返します。それ以外の場合はfalseを返します。 [* new_record?*](https://apidock.com/rails/ActiveRecord/Base/new_record%3F)は、の存在をチェックする*のAR法*であるという事実を考慮

Refer Here

+1

だから、あなたはこれから何を結論づけますか? –

+0

@Md。 Farhan Memonこれはあなたの答えと同じですが、これはRuby APIに書かれている説明です。 –

関連する問題