【问题标题】:Dynamic form validation in RailsRails 中的动态表单验证
【发布时间】:2012-06-23 14:27:39
【问题描述】:

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

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

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

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

【问题讨论】:

  • 不确定 ActiveModel/ActiveRecord 存在什么问题。您想要的是能够在验证中引用记录,对吗?
  • 我对任何事情都没有“问题”。我只想在基于另一个类的属性的非 ActiveRecord 模型中进行验证。
  • 但是您向我们展示了一个 ActiveRecord 模型。加上验证有 self 引用 person 类,但可能意味着引用验证的记录。请澄清
  • 抱歉,ACtiveRecord 是复制粘贴错误。我在问 ActiveModel 是否可以为我做这件事,但我与 ActiveModel 无关。我想用另一个类(鞋)的属性对一个类(人)执行 ActiveRecord 样式验证,而这个类又是被验证类的一个属性。

标签: ruby-on-rails validation activerecord activemodel


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2014-01-28
    相关资源
    最近更新 更多