ruby-on-rails – Rails 3验证:presence => false

以下是我期待的一个完全直截了当的问题,但是我在“指南”或其他地方找不到确切的答案.

我在ActiveRecord上有两个属性.我想要一个是存在的,另一个是零或一个空白的字符串.

我如何做等同于:presence =>假?我想确保该值为零.

validates :first_attribute,:presence => true,:if => "second_attribute.blank?"
validates :second_attribute,:if => "first_attribute.blank?"
# The two lines below fail because 'false' is an invalid option
validates :first_attribute,:presence => false,:if => "!second_attribute.blank?"
validates :second_attribute,:if => "!first_attribute.blank?"

或者也许有更优雅的方式来做到这一点…

我正在运行Rails 3.0.9

解决方法

class NoPresenceValidator < ActiveModel::EachValidator                                                                                                                                                         
  def validate_each(record,attribute,value)                                   
    record.errors[attribute] << (options[:message] || 'must be blank') unless record.send(attribute).blank?
  end                                                                           
end    

validates :first_attribute,:if => "first_attribute.blank?"

validates :first_attribute,:no_presence => true,:if => "!first_attribute.blank?"

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...