2016-10-21 8 views

答えて

1

find_byは、単一のレコード(最初に指定された条件に一致します)を返します。したがって、必要な処理を行う方法(およびセンス)はありません。

EDIT

てください!しかし、私は1つだけのオブジェクトが欲しい!

次のクエリは、(それが1以外のコード123と任意のstate_idを検索し、それがこの条件に合致する最初のレコードを返します。)それを行うだろう:

Home.find_by(code: '123', state_id: State.ids - [1]) 
+0

確かに!しかし、私は1つだけのオブジェクトが欲しい! – dijiri

+0

しかしfind_byで "not"を使う方法はわかりません – dijiri

+0

@dijiri最新の回答の編集を確認してください。コード123と1以外の 'state_id'を検索します。そして、この条件に一致する最初のレコードを返します。 –

0

ゴールがされた場合理由場合

Home.where(code: "x123").where.not(state_id: 1).first

:あなたは、単にfirstを使用することができ、単一のオブジェクトを返しますfind_byを使用したい場合は、レコードを紛失してActiveRecord::RecordNotFoundにする必要がありますので、代わりにfirst!を使用できます。

関連する問題