Hi,
I''m trying to validate the uniqueness of a value in a model where a
user has_one item. When the record is created, this isn''t a problem
as I just use validate_uniqueness_of. However, on update, I need to
be able to bill the user the difference between their existing item
and their new amount:
class Item < CachedModel
attr_accessor :bidup
belongs_to :user
...
validates_uniqueness_of :value, :message => "Somebody''s
already got
that spot. Nudge it by 1 and try again."
...
def after_save
deduct_payment(self.value) if !bidup?
deduct_payment(self.bidup) if bidup?
end
def save
self.value += self.bidup if bidup?
begin
super
rescue ActiveRecord::StatementInvalid => error
errors.add(:value, "Somebody''s already got that spot. Nudge
it
by 1 and try again.")
return false
end
end
protected
def bidup?
!self.bidup.blank?
end
end
This works fine on create, but when I call
Item.update_attribute(:bidup, <some integer>) it raises
"ArgumentError: wrong number of arguments (1 for 0)". I''m
not deeply
attached to this way of doing things and would welcome any
suggestions.
Cheers,
Todd
--~--~---------~--~----~------------~-------~--~----~
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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---