我正在开发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
可能吗?或者有没有更好的方法来组合验证来使代码DRY?
答案 0 :(得分:0)