我有几个这样的模特
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
Run Code Online (Sandbox Code Playgroud)
上面的验证显然不起作用,因为当我从bill表单中的嵌套属性中读取bill_items时,属性bill_item.bill_id或bill_item.bill在保存之前不可用.
那我该怎么做呢?
我有一个Bill嵌套Customer模型的模型.该Customer模型有一个电话号码,上面有唯一性验证.在创建帐单时,我想根据电话号码获取现有记录,或者如果不存在则创建新记录.我应该怎样做RESTful?