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か?