Ich versuche etwas zu tun wie:
%Vor%Aber ich brauche Benutzer, um eine Methode für ein Konto zu sein. Also habe ich Dinge ausprobiert wie:
%Vor%Aber ich hatte damit kein Glück. Ist das in Ruby überhaupt möglich? Ich würde das annehmen, weil die ActiveRecord-Beziehungen in Rails so zu funktionieren scheinen.
Überprüfen Sie diese Antwort: Rails: Überschreiben der ActiveRecord-Verknüpfungsmethode
[Dieser Code ist vollständig von der anderen Antwort, hier für zukünftige Suchende]
%Vor% Es scheint so, als würden Sie Ihr tatsächliches Problem nicht beschreiben, sondern Ihre Frage beantworten - ja, Sie können den Operator <<
überschreiben:
In diesem Fall ist es der <<
deiner Klasse von dir User. So kann ein Array
oder ein AssociationProxy
sein.
Am einfachsten ist es, eine neue Methode zu erstellen, um das zu tun, was Sie wollen.
Sie können die Methode stattdessen durch eine Instanz überschreiben.
%Vor%Aber Sie müssen das immer tun, bevor Sie nach & lt; & lt;
hinzufügenIch nehme an, Sie haben ein Modell wie folgt:
%Vor% Um Account#users<<
zu überschreiben, müssen Sie es in einem Block definieren, den Sie an has_and_belongs_to_many
übergeben:
Sie können auf das entsprechende Objekt Account
zugreifen, indem Sie auf proxy_association.owner
:
Um das ursprüngliche Account#users<<
aufzurufen, rufen Sie Account#users.concat
:
Weitere Informationen finden Sie auf dieser Seite: Verknüpfungserweiterungen - ActiveRecord
Wenn Sie beim Hinzufügen eines User
zur users
-Auflistung eine Aktion ausführen möchten, können Sie Assoziationsrückrufe anstatt <<
zu übersteuern (da es viele Möglichkeiten gibt, ein Objekt zu einer Assoziation hinzuzufügen).
Tags und Links ruby ruby-on-rails override