私は「レコードを作成して保存するには、実行しなければならないという印象を常に受けてきました。 record.new
そして record.save
、または record.create
.
このコードでレコードがどのように保存されるのか理解できたことはありません。
def create
@record = Record.new(record_params)
if @record.save
#do stuff
end
end
私は if
行とレコードが保存されなくなりました。私は思った if
ステートメントは条件をテストしたばかりですか、それともアクションを実行することもできますか?
回答:
回答№1は2方法 save
メソッドが呼び出された後にtrueまたはfalseを返します。 ステップ1、モデルは保存しようとします。保存した場合はレコードを保存し、ステップ2の場合はtrueを返します。保存されない場合、メソッドはfalseを返します。あなたのifステートメントは、それぞれの状況に対して何をすべきかを制御します。
if @model.save
end
回答№2の場合は3
私はステートメントが条件をテストしただけなのか、それとも実行できるのかと思いました アクションも?
Rubyでは、式の評価は真偽値または偽の値を返します。 関係ない式そのものは何ですか。
式は偽になります 排他的に どちらかを返す場合 nil
または false
そうでなければそれは真実です。
だから、あなたのケースに戻って、 ActiveRecord :: Persistance#save
返品 true
レコードが正常に保存された場合は、それ以外の場合は false
.
答え№3の2
Rubyで if
trueまたはfalseを返す式です(すべてが式です)。そして他の言語と同じように if
または else
または elsif
ブロックが実行されます。
(レコードをデータベースに保存するような)副作用のある式に述語を置くと、もちろん副作用が適用されます。これはほとんどのプログラミング言語に当てはまります。
def foo
print "Hello "
true
end
if foo
print "world!"
end
回答№4の場合は1
Ruby(および他の多くの言語) if
ステートメントは条件をテストします。しかし、条件をテストするには、条件内のコードを評価する必要があります。つまり、実行します。
それで、それはどのようにしていますか。 if
文が実行されます @record.save
, save
メソッドは保存しようとします @record
返品 true
それがうまくいけば。レコードを保存できない場合は false
.
その後、 if
結果をチェックします(true
または false
)。 @record
その時点ですでに保存は実行されています。
回答№5の場合は0
ここに @record.save
レコードを保存してどちらかを返します true
または false
そしてその値は以下によって評価されます。 if
通常あなたが上でいくつかの行動をしたいときにこれを使うでしょう success
または failure
保存されているレコードの