Tôi có Danh mục và Sản phẩm mô hình. Nếu tôi sử dụng category.products << new_product
mục sẽ được thêm vào mảng và bản ghi được lưu vào cơ sở dữ liệu. Tôi đã thử thêm phương thức "add" sau vào lớp mảng và trong khi nó thêm new_product vào mảng, nó không lưu nó vào cơ sở dữ liệu. Tại sao vậy?Thêm phương thức Thêm vào mảng ActiveRecord
class Array
def add(item)
self << item
end
end
Cập nhật:
collection_proxy.rb có các phương pháp sau đây:
def <<(*records)
proxy_association.concat(records) && self
end
alias_method :push, :<<
Vì vậy, các phần mở rộng sau hoạt động:
class ActiveRecord::Relation
def add(*records)
proxy_association.concat(records) && self
end
end
Giải pháp:
Thêm một bí danh cho CollectionProxy:
class ActiveRecord::Associations::CollectionProxy
alias_method :add, :<<
end
Bởi vì hiệp hội Rails không mảng, họ chỉ tuyên bố họ . –
Vậy thì chúng là gì? làm cách nào tôi có thể thêm phương thức "Thêm"? – Manuel