2016-09-30 4 views
0

Ich habe versucht, has_one Verbindung mit Verfahren zu erweitern:Active `has_one` Verein Erweiterungsmethode

has_one :subscription_plan, -> { where current: true } do 
    def in newspaper 
    where newspaper: newspaper 
    end 
end 

und bekam einen Fehler undefined method 'in' for #<SubscriptionPlan...>

Aber es funktioniert mit has_many:

has_many :subscription_plans, -> { where current: true } do 
    def in newspaper 
    where(newspaper: newspaper).take 
    end 
end 

Wie funktioniert es mit has_one auf Rails 4.2.1?

Antwort

0

von has_many Vereinigung Zugriff erhalten Sie SubscriptionPlan::ActiveRecord_Associations_CollectionProxy aber mit has_one Sie einfach SubscriptionPlan Instanz selbst erhalten.

So gibt es hier nichts zu erweitern.

Wenn Sie mehr Informationen über Ihre Modelle liefern würde, würde ich Ihnen mit genauem Code helfen.

+0

danke viel! ActiveRecord docs http://guides.rubyonrails.org/association_basics.html#association-extensions sind ein wenig verwirrend: 'Erweiterungen können sich auf die Interna des Assoziations-Proxy beziehen, indem sie diese drei Attribute des accessor_association-Accessors verwenden: ... proxy_association. target gibt das zugeordnete Objekt für "objects_to" oder "has_one" oder die Auflistung verknüpfter Objekte für "has_many" oder "has_and_belongs_to_many." zurück. Ist es ein Fehler in der Dokumentation, dass 'has_one' erwähnt wird? – yurko

+0

Ich glaube nicht, dass es ein Fehler ist, aber im Moment kann ich es nicht kommentieren =) – Aleksey