Да, такая проблема может раздражать.Вы можете попробовать добавить виртуальный атрибут в модель Билла следующим образом:
class BillItem <ActiveRecord::Base
belongs_to :product
belongs_to :bill
attr_accessible :store_id
validate :has_enough_stock
def has_enough_stock
stock_available = Inventory.product_is(self.product).store_is(load_bill_store).one.quantity
errors.add(:quantity, "only #{stock_available} is available") if stock_available < self.quantity
end
private
def load_bill_store
Store.find_by_id(self.store_id)
end
end
И затем, на ваш взгляд, вы можете добавить скрытое поле, например:
<%= bill_item.hidden_field :store_id, :value => store_id %>
Это неЭто был тест, но это может сработать.Возможно, вы не захотите указывать store_id в html, но это может не беспокоить.Позвольте мне знать, если это помогает.