モデルのカテゴリと製品があります。使用するcategory.products << new_product
と、アイテムが配列に追加され、レコードがデータベースに保存されます。次の「add」メソッドを配列クラスに追加しようとしましたが、new_product が配列に追加されますが、データベースには保存されません。何故ですか?
class Array
def add(item)
self << item
end
end
アップデート:
collection_proxy.rb には次のメソッドがあります。
def <<(*records)
proxy_association.concat(records) && self
end
alias_method :push, :<<
したがって、次の拡張機能が機能します。
class ActiveRecord::Relation
def add(*records)
proxy_association.concat(records) && self
end
end
解決:
CollectionProxy にエイリアスを追加します。
class ActiveRecord::Associations::CollectionProxy
alias_method :add, :<<
end