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 …

On 14 Aug 2008, at 13:45, Erwin wrote:

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

On 14 août, 15:04, Frederick C. [email protected]

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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs