我发现很难用我定制的验证器进行一些验证。
在这里:
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是我想阅读的数字。这当然行不通。
有什么建议吗?
您可以使用 Proc 作为参数。像这样:
validates :baggage, :some => {:max => Proc.new{|record| record.flight.max_allowance}}