我发现很难用自定义验证器进行验证。
这是:
class SomeValidator < ActiveModel::Validator
def validate(record)
if record.baggage > options[:max]
record.errors[:baggage] << "is over #{options[:max]}."
end
end
end
现在我正在尝试发送这个需要从另一个模型中读取的数字。这是我验证过的模型:
class Seat < ActiveRecord::Base
belongs_to :flight
validates :baggage, :some => {:max => flight.max_allowance}
end
航班是另一种型号,而max_allowance是我想要阅读的号码。这当然不起作用。
有什么建议吗?
答案 0 :(得分:0)
您可以使用Proc作为参数。像这样:
validates :baggage, :some => {:max => Proc.new{|record| record.flight.max_allowance}}