I’m trying to set up my model in Rails 3.2.8 such that particular values must be present, but are allowed to be the empty string. Does anyone know how to do this?
The behavior I’m looking for looks like:
@foo.value = "this is a real value"
@foo.valid? # => true
@foo.value = nil
@foo.valid? # => false
@foo.value = ""
@foo.valid? # => true
If I use
validates :foo, :presence => true
then I get what I want for 1 and 2, but not 3. And, helpfully, :allow_blank => true is ignored when validating presence.
I also tried
validates :foo, :length => { :minimum => 0 }, :allow_nil => false
Same behavior: get what I want for 1 and 2, but not 3.
I suppose I could just mark the column as NOT NULL in the database, but then I have to deal with catching the exception; I’d really rather catch this at the validation stage.
Any ideas?
I would try something like this: