2016-07-21 1 views
3

現在、私はActiveRecords whereを上書きする宝石に取り組んでいます。それに取り組むことで、私は2つの異なるfind_byの実装を見つけました。 1つはcoreにあり、ある種のキャッシュを使用しますが、FinderMethodsモジュールからのものはwhereを直接呼び出します。これら2つの実装の違いは何ですか?いつ使われますか?コアからのfind_by()とFinderメソッドからのfind_by()との違いは何ですか?

+0

おそらくそれは私ですが、 'where'のようなRailsのコアメソッドをオーバーライドすると、恐ろしいアイデアのように感じられます。 – spickermann

+0

' globalize'のような人気のある宝石もそうしています。幸運にも、ActiveRecordのテストはたくさんあります。 – Robin

答えて

2

は、私はそれがその方法だと思う:コアをベースに含まれているとして、そこからあなたが継承

User.find_by(...) 

ActiveRecord::Core#find_byが呼び出されます:あなたはこのようなものを使用する場合。

しかし、あなたのような何かをすれば:これはそのように実装されている理由はActiveRecord ::関係(FinderMethodshereを含んでいます)FinderMethods#find_by

を呼び出します

User.first.products.find_by(...) 

私は知らないが、私は」これには理由があると確信しています。

関連する問題