はじめに
Railsガイドを読み返していたら便利そうなものを見つけたので備忘録代わりに残しておきます。
Nullリレーション
noneメソッドは、チェーン (chain) 可能なリレーションを返します (レコードは返しません)。このメソッドから返されたリレーションにどのような条件をチェーンさせても、常に空のリレーションが生成されます。これは、メソッドまたはスコープへのチェーン可能な応答が必要で、しかも結果を一切返したくない場合に便利です。
irb(main):001:0> User.none
=> []
irb(main):002:0> User.none.class
=> User::ActiveRecord_Relation
こんな感じで、空のリレーション(Nullリレーション)を返してくれる。
irb(main):003:0> User.none.limit(1)
=> []
リレーションを期待しているコードに対しても正常に応答するので、より保守性の高いコードが書けそう。