4

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

4

1 に答える 1