変数を特定の値に設定したいのですが、その値が有効な場合のみです。変数を値に設定するには、その値が有効な場合のみどうすればよいですか?
は今のところ、これは私が持っているコードです:
if Something.find(params[:id].comments.first.exists?
@comment = Something.find(params[:id]).comments.first
else
@comment = nil
end
しかし、それは二回レコードをロードする必要があるため、これは非効率的です。
私は値が有効な場合、変数にのみ設定されることを保証するために、Rubyのメソッドtry
を使用しようとしました:
@comment = Something.try.find(params[:id]).comments.first
が、私はそれを置く、私は戻って、「nilを得るに関係なくではありません記号 "エラー。
try
は、変数を印刷するためのものです。
他に1つのクエリでこれを達成する方法が他にありますか?
クエリが失敗した場合、デフォルトでは 'nil'が返されます。あなたの単一のクエリを実行し、事実の後に 'nil'をテストします。 – MarsAtomic
@MarsAtomicクエリが失敗した場合、ページ全体で「レコードが見つかりません」というエラーが発生します。 –
'rv = Something.find(params [:id])。comments.first; @comment = rv.exists? :rv:nil'。あなたはコードの最初の行に右のparenがありません。 –