我有模型类别和产品。如果我使用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