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