きょうのまちがい : 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!使ってたら気づかなかくてやばかった)
単一のが欲しければメソッドにします。