views:

270

answers:

2

I have a basic ActiveRecord model in which i have two fields that i would like to validate. The requirement is that at least one of the fields must have a value. Both can have values, but at least one needs a value.

How do i express this with

validates_presence_of

statements? For example:

validates_presence_of :main_file
validates_presence_of :alt_file

i don't want an error to be generated if only one of them is empty, only if both are empty.

+5  A: 
validates_presence_of :main_file, :if => Proc.new { |p| p.alt_file.blank? }
validates_presence_of :alt_file, :if => Proc.new { |p| p.main_file.blank? }
Bartosz Blimke
Wouldn't it be better to `blank?` instead of `nil?`?
Christoph Schiessl
+3  A: 

changing .nil? to .blank? does the trick!

Jason Miesionczek