Rails中的动态表单验证

时间:2012-06-21 11:00:14

标签: ruby-on-rails validation activerecord activemodel

我有一个我要验证的表单。验证基于其他几个模型对象中的属性,但表单本身与ActiveRecord模型不对应。

是否可以使用ActiveModel来实现这一目标?

class Person < ActiveModel
  has_one :shoe
  validates :name, :length => { :maximum => self.shoe.size }
end

我基本上想要根据另一个模型对象的属性验证表单。这有可能吗?

1 个答案:

答案 0 :(得分:2)

class Person 
  include ActiveModel::Validations

  # has_one :shoe # This won't work

  validates :validates_name_length

  private
  def validates_name_length
    errors.add :name, 'too long' if name && name.length > shoe.size 
  end
end