我正在开发 rails 3 并对同名进行多次验证。我想将重复验证与条件结合起来。我不知道我是否做错了,甚至可能。
在我的模型中(原始)
class MyModel < ActiveRecord::Base
validates :exchange_rate, :presence => true,
:numericality => { :greater_than => 0 },
:unless => :is_using_default_currency?
validates :exchange_rate, :numericality => { :equal_to => 1 },
:if => :is_using_default_currency?
private
def is_using_default_currency?
value == 1
end
end
我想做这样的事情
在我的模型中
validates :exchange_rate, :presence => true, :exchange_rate => true
在自定义验证器类中
class ExchangeRateValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
@record = record
if is_using_default_currency?
validates :exchange_rate, :presence => true,
:numericality => { :greater_than => 0 }
else
validates :exchange_rate, :numericality => { :equal_to => 1 }
end
end
private
def is_using_default_currency?
@record.value == 1
end
end
那可能吗?或者有没有更好的方法来组合验证以使代码干燥?