Mam modele Kategoria i produkty. Jeśli użyję category.products << new_product
element zostanie dodany do tablicy, a rekord zostanie zapisany w bazie danych. Próbowałem dodać następującą metodę "add" do klasy tablic i podczas gdy ona dodaje nowy_produkt do tablicy, nie zapisuje go do bazy danych. Dlaczego?Dodawanie metody Dodaj do tablicy ActiveRecord
class Array
def add(item)
self << item
end
end
Aktualizacja:
collection_proxy.rb ma następujący sposób:
def <<(*records)
proxy_association.concat(records) && self
end
alias_method :push, :<<
Więc następujące rozszerzenie działa:
class ActiveRecord::Relation
def add(*records)
proxy_association.concat(records) && self
end
end
Rozwiązanie:
Dodaj alias do CollectionProxy:
class ActiveRecord::Associations::CollectionProxy
alias_method :add, :<<
end
Ponieważ Szyny stowarzyszenia nie są tablice, po prostu twierdzą, że są . –
Czym one są wtedy? jak mogę dodać metodę "Dodaj"? – Manuel