多个模型的自定义验证

时间:2011-05-13 23:27:12

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

我发现很难用自定义验证器进行验证。

这是:

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是我想要阅读的号码。这当然不起作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Proc作为参数。像这样:

validates :baggage, :some => {:max => Proc.new{|record| record.flight.max_allowance}}