Ich habe die Modelle Kategorie und Produkte. Wenn ich category.products << new_product
verwende, wird das Element zum Array hinzugefügt und der Datensatz wird in der Datenbank gespeichert. Ich habe versucht, die folgende "add" -Methode zu der Array-Klasse hinzuzufügen und während es das neue Produkt zum Array hinzufügt, speichert es es nicht in der Datenbank. Warum das?Add-Methode zu ActiveRecord Array hinzufügen
class Array
def add(item)
self << item
end
end
Update:
collection_proxy.rb wurde das folgende Verfahren:
def <<(*records)
proxy_association.concat(records) && self
end
alias_method :push, :<<
So ist die folgende Erweiterung funktioniert:
class ActiveRecord::Relation
def add(*records)
proxy_association.concat(records) && self
end
end
Lösung:
einen Alias zum CollectionProxy hinzufügen:
class ActiveRecord::Associations::CollectionProxy
alias_method :add, :<<
end
Da Rails Assoziationen sind keine Arrays, sie behaupten, nur sie sind . –
Was sind sie dann? Wie kann ich eine "Add" -Methode hinzufügen? – Manuel