Rescue unique constraint in the model

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