Derzeit arbeite ich an einem Edelstein, der ActiveRecords where
überschreibt. Indem ich daran arbeitete, stolperte ich über zwei verschiedene find_by
Implementierungen. Einer ist in der core und es verwendet eine Art von Cache, während der eine aus dem FinderMethods
Modul where
direkt ruft. Was ist der Unterschied zwischen diesen beiden Implementierungen? Wann wird was benutzt?Was ist der Unterschied mit find_by() vom Kern und dem von den FinderMethoden?
3
A
Antwort
2
Ich denke, es ist so: Wenn Sie etwas wie folgt verwenden:
User.find_by(...)
Die ActiveRecord::Core#find_by
genannt wird, als Kern in die Base enthalten ist, von dem Sie erben.
Aber wenn Sie etwas tun:
User.first.products.find_by(...)
Die Active :: Relation (inklusive FinderMethods
here) wird FinderMethods#find_by
nenne ich weiß nicht, warum dies so umgesetzt wird, aber ich Sicher gibt es einen Grund dafür.
Vielleicht ist es nur ich, aber eine Rails-Kernmethode wie 'where' zu überschreiben, fühlt sich für mich wie eine schreckliche Idee an ... – spickermann
Nun, beliebte Edelsteine wie' globalisieren' tun das auch. Zum Glück gibt es viele Tests für ActiveRecord. – Robin