Contract
モデルには、希望どおりmerge
ではなく、配列を使用して返すスコープがありますActiveRecord::Relation
。
はい、「これは ActiveRecord::Relation ですが、Rails は意図的に嘘をついています」と書かれているのを見たことがあります。しかし、この場合:
- スコープは
merge
- チェーンの最後のスコープである場合にのみ機能します
- それが返すオブジェクトは、それがクラスのものであると言います
Array
ActiveRecord
それが返すオブジェクトは、その先祖には何もありませんActiveRecord::Relation
戻り値のようなメソッドを呼び出すscoped
と raises が発生しNoMethodError: undefined method 'scoped' for []:Array
ます。
スコープがオンになっていてContract
、次のように見えます
scope :hourly, scoped.merge(Division.find_by_name!('Hourly').contracts)
これが配列を返すのはなぜですか? を返すようにできますActiveRecord::Relation
か?