Tôi có một vài mô hình như vậyRuby on Rails - thuộc tính lồng nhau: Làm thế nào để truy cập vào các mô hình mẹ từ mô hình con
class Bill < ActiveRecord::Base
has_many :bill_items
belongs_to :store
accepts_nested_attributes_for :bill_items
end
class BillItem <ActiveRecord::Base
belongs_to :product
belongs_to :bill
validate :has_enough_stock
def has_enough_stock
stock_available = Inventory.product_is(self.product).store_is(self.bill.store).one.quantity
errors.add(:quantity, "only #{stock_available} is available") if stock_available < self.quantity
end
end
Việc xác nhận trên như vậy rõ ràng không hoạt động bởi vì khi tôi đang đọc bill_items từ các thuộc tính lồng nhau bên trong biểu mẫu hóa đơn, các thuộc tính bill_item.bill_id hoặc bill_item.bill không có sẵn trước khi được lưu.
Vậy làm cách nào để tôi thực hiện những việc như vậy?
Tôi đã giải quyết vấn đề này bằng cách thêm một cuộc gọi lại cho liên kết,: before_add =>: set_nest – TMaYaD