Hi
I have three models:
class Product < ActiveRecord::Base
has_many :coupons
has_many :orders
end
class Coupon < ActiveRecord::Base
belongs_to :product
end
class Order < ActiveRecord::Base
belongs_to :product
end
When creating an order, a coupon can be supplied to make use of a
discount. I want to validate that the coupon given is indeed belonging
to the product the user is trying to buy (and not some other random
product).
If I where just to validate that the coupon existed at all, I could
write the following inside the Order model:
validates_inclusion_of :coupon, :in => Coupon.all.map(&:code)
But how do I validate that it is belonging to the correct product?
I''ve tried:
validates_inclusion_of :coupon, :in => product.coupons.map(&:code)
But then I get an error: "undefined local variable or method product"
Then I''ve tried both:
validates_inclusion_of :coupon, :in => lambda { product.coupons.map
(&:code) }
and
validates_inclusion_of :coupon, lambda { { :in => product.coupons.map
(&:code) } }
But then I get the error: "An object with the method include? is
required must be supplied as the :in option of the configuration hash"
How can I do this?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---