validates_each, how to set options ?

Hi

I wrote the following validation in my model (using Rails 2.1)

validates_each :checker :do |record, attr, value|
    record.errors.add attr, :existing_checkin_out if value == 0
  end , :on => :update, :if => :checker_required?

obviously I got an error as I don't know where to write the :on
and :if options ..... (I also tried many other way ..)

1- how can I write them in validates_each ?

2- is there any better validation procedure, on UPDATE only, for
this 'checker' field (value is 0 or 1)

if the field is updated to 0 (changing the status to non-checker...)
I want to add an error
ONLY when checker state 1 is still mandatory (checker_required? =>
true)
(some planned or confirmed checkins or checkouts instances are still
depending upon this user)

here is my checker_required? proc

protected
    def checker_required?
      checks = self.checkins + self.checkouts
      return false if checks.empty?
      checks.map {|c| c[:id] if c.planned? ||
c.confirmed? }.compact.empty? ? false : true
    end

thanks for your lights ...

Hi

I wrote the following validation in my model (using Rails 2.1)

validates_each :checker :do |record, attr, value|
   record.errors.add attr, :existing_checkin_out if value == 0
end , :on => :update, :if => :checker_required?

obviously I got an error as I don't know where to write the :on
and :if options ..... (I also tried many other way ..)

1- how can I write them in validates_each ?

2- is there any better validation procedure, on UPDATE only, for
this 'checker' field (value is 0 or 1)

You could make things a lot easier with

def validate_on_update
   errors.add ... if checker == 0 && checker_required?
end

Fred

Thanks Fred

I knew I was far from being right... you made my day

To still answer your original question about where to put the options
if you were to use that validation one day:
validates_each :attribute, :some_other_attribute, :on => :update, :if
=> :some_proc_to_check do |record, attr, value|
   record.errors.add "message", some_check
end

Makes only sense to use validates_each if you have more than one
attribute to validate in the block.

Dirk.