2010-02-02 11 views
6

Aus einem flüchtigen Blick scheinen sie einfach zwei verschiedene Ansätze für die gleiche Reihe von Problemen zu sein, außer dass die angegebenen Bereiche verkettbar sind, während Assoziationserweiterungen nicht sind.Wann Assoziationserweiterungen vs benannte Bereiche verwenden?

Kann jemand weiter erklären oder ein Beispiel angeben, das für eine Assoziationserweiterung geeigneter wäre als ein benannter Bereich?

Antwort

11

Assoziationserweiterungen sind sehr nützlich zum Erstellen von benutzerdefinierten Methoden zum Erstellen, Aktualisieren usw. (nicht unbedingt finden).

Da Sie Zugriff auf den proxy_owner, proxy_reflection, proxy_target, haben Sie einen schönen Haken in der Beziehung.

Schauen Sie sich den Verband Erweiterung Abschnitt der Schienen docs:

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

0

Ja, Sie haben Recht, der Hauptunterschied ist, dass named_scope 's kettenfähig sind. Aber sie haben im Prinzip die gleiche Funktion, nur dass Assoziationserweiterungen schneller sind.

+2

Das ist falsch. Sie können mit Assoziationserweiterungen erheblich verschiedene Dinge tun. – Ben

Verwandte Themen