Forum: Ruby on Rails Validation on composed_of problem

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
C1ce26369f769e8df52e112b5b4fa0b0?d=identicon&s=25 Eduardo Rocha (Guest)
on 2006-01-22 17:22
I am having problems with this:

    validates_presence_of :amount

    validates_format_of :amount, :with => Money::PATTERN, :allow_nil =>

    composed_of :amount, :class_name => Money, :mapping => [[:amount,

The problem is when I use this field in a form, and the text is blank,
ActiveRecord gives me two errors:

"money is invalid"
"money can't be blank"

I want only "money can't be blank" if the field is empty, and "money is
invalid" only when the pattern doesn't match and the field is not empty.

The problem here is that when ActiveRecord run "validates_format_of", it
calls "model.amount", which in turn calls "Money.initialize(nil)". Then
the "amount" field gets an empty Money, which is not blank.

I wrote some custom code to fix that (implemented "def amount=(value)"
and "def amount"), but I would like to know if there is already
something I could do instead of using this custom code.
This topic is locked and can not be replied to.