ActiveRecordのオプションは、たとえば次のような無料のアソシエーションcustom_finder
拡張機能を利用できることを意味しているという印象を受けました。.where
.order
class Dog < ActiveRecord::Base
has_many :fleas, class_name: 'Flea',
finder_sql: "select fleas.* from fleas where pet_type = 'dog'"
end
'finder_sql'は非常に些細なことですが、要点を示しているため、これは良い例ではありません。
生成されたSQL
私は次のことを期待します
@dog = Dog.find(5)
@dog.fleas.where('num_legs > 2')
引き起こす
"select fleas.* from fleas where pet_type = 'dog' AND num_legs > 2
つまり、カスタムfinder_sql+where句
ただし、実際に生成されるのは
"SELECT "base_posts".* FROM "fleas" WHERE "fleas"."dog_id" = 5 AND (num_legs > 2)
つまり、習慣を完全に無視しfinder_sql
、ノミを現在の犬に参加させようとします。
カスタムfinder_sql
がアソシエーション拡張機能にそれを尊重させない場合、その中のポイントは何ですか-それは単にオブジェクトのメソッドである可能性があります...