首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在自定义验证中使用默认验证器

在自定义验证中使用默认验证器
EN

Stack Overflow用户
提问于 2013-04-29 13:12:12
回答 1查看 90关注 0票数 0

我基本上要做的是创建一个自定义验证,它调用一个带有特定选项的RoR默认验证,以尝试和减少样板(并使此验证可供所有模型全局使用)

在RoR中对某个字段进行自定义验证的方法是使用validates_each方法,如下所示

代码语言:javascript
运行
复制
class SelectBooleanValidator < ActiveModel::EachValidator

  def validate_each(record,attr,value)
    #do validation here
  end

end

我要做的是在validator_each中调用inclusion验证器方法,以便select_boolean验证(我正在实现的)只使用:inclusion验证器和某些选项,即我想做这样的事情(请注意,这段代码实际上并不工作,但下面是我主要想要做的事情)

代码语言:javascript
运行
复制
class SelectBooleanValidator < ActiveModel::EachValidator
  include ActiveModel::Validations
  def validate_each(record,attr,value)
    validates_with InclusionValidator, record,attr,value,  {:in => [true, false],:message=>'can\'t be blank'}
  end
end

然后我会(在我的模型中)这样做

代码语言:javascript
运行
复制
validates :awesome_field, select_boolean:true

而不是必须一直这样做

代码语言:javascript
运行
复制
validates :awesome_field, :inclusion => {:in => [true, false], message: 'can\'t be blank'}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-29 14:26:07

代码语言:javascript
运行
复制
class SelectBooleanValidator < ActiveModel::Validations::InclusionValidator
  def options
    super.merge(:in => [true, false], message: 'can\'t be blank')
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16271576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档