如何验证composition_of ActiveRecord类?

时间:2010-12-29 18:23:32

标签: ruby-on-rails activerecord ruby-on-rails-3

我喜欢在我的Rails应用程序中使用composed_of,它可以帮助我从原始数据库数据中创建好的问题空间对象。

我有一个问题,验证它们的最佳方法是什么,理想情况下使用自动ActiveRecord方式?

有时验证原始数据就足够了,但通常对象过于复杂,并且您希望向用户报告有意义的信息(靠近撰写对象)。

我发现了这个:http://www.stephenchu.com/2008/05/rails-composedof-validation.html但它似乎并不优雅或像Rails一样。

1 个答案:

答案 0 :(得分:0)

为什么你不能这样做(我的一个应用程序的例子):

composed_of :cents_cost_amount,
            :class_name => "Money",
            :mapping => [%w(cents_cost_amount cents), %w(currency currency_as_string)],
            :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) },
            :converter => Proc.new { |value| value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError, "Can't convert #{value.class} to Money") }   

validates :cents_cost_amount,             
          :numericality => {:greater_than_or_equal_to => 0, 
                            :less_than_or_equal_to => 1000000, 
                            :message => "Only amounts in the range 0 to 10000.00 are allowed."  }    

如果没有具体的例子,很难让您更深入地了解您的问题。