Ruby on Rails - nested attributes: How do I access the parent model from child model

Posted by TMaYaD on Stack Overflow See other posts from Stack Overflow or by TMaYaD
Published on 2010-04-09T22:48:23Z Indexed on 2010/04/09 22:53 UTC
Read the original article Hit count: 419

I have a couple of models like so

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

The above validation so obviously doesn't work because when I'm reading the bill_items from nested attributes inside the bill form, the attributes bill_item.bill_id or bill_item.bill are not available before being saved.

So how do I go about doing something like that?

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about nested-attributes