きょうのまちがい : ActiveRecordのscopeにnilを返しうる式を書く。

きょうのまちがい : ActiveRecordのscopeにnilを返しうる式を書く。

Rails4.2.4です。

事象

scope :at, ->(position){ find_by(position: position)}

こういうことをしておりまして、レコードがみつかればそれ一つがかえってきました。

しかしfind_byの結果がnilだった場合、レコードが全部入ったActiveRecord::Relationが返ってきました。

以下のコードで確認できます。nilはかえってきません。

scope :at, ->{ nil }

scopeにはActiveRecord::Relationを返す式を書くんだ

お前のscopeの使い方は根本的に間違っているとRailsに身をもって教えられました。(find_by!使ってたら気づかなかくてやばかった)

単一のが欲しければメソッドにします。