加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:51:49 所属栏目:百科 来源:网络整理
导读:以下是我期待的一个完全直截了当的问题,但是我在“指南”或其他地方找不到确切的答案. 我在ActiveRecord上有两个属性.我想要一个是存在的,另一个是零或一个空白的字符串. 我如何做等同于:presence =假?我想确保该值为零. validates :first_attribute,:pres
以下是我期待的一个完全直截了当的问题,但是我在“指南”或其他地方找不到确切的答案.

我在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?"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读