ruby-on-rails – 如何根据其他属性值添加自定义验证消息?
发布时间:2020-12-17 02:03:44 所属栏目:百科 来源:网络整理
导读:我正在使用 Ruby on Rails 3.2.9而我只是想使用 state_machine gem.我有以下声明: # Model class attributes are:## [String] status# [Boolean] checkin_1# [Boolean] checkin_2#class Article ActiveRecord::Base state_machine :attribute = :status,:in
我正在使用
Ruby on Rails 3.2.9而我只是想使用
state_machine gem.我有以下声明:
# Model class attributes are: # # [String] status # [Boolean] checkin_1 # [Boolean] checkin_2 # class Article < ActiveRecord::Base state_machine :attribute => :status,:initial => :unconfirmed do state :confirmed,:value => 'confirmed' state :unconfirmed,:value => 'unconfirmed' event :confirm do transition :unconfirmed => :confirmed end event :unconfirm do transition :confirmed => :unconfirmed end end end 我想在触发确认事件并且checkin_1和/或checkin_2值为false时向实例对象添加自定义验证消息(避免保存这些对象).也就是说,鉴于我正在尝试确认以下每个对象: <#Article id: 1,:status: 'unconfirmed',checkin_1: false,checkin_2: false> <#Article id: 1,checkin_2: true> <#Article id: 1,checkin_1: true,checkin_2: false> 然后我想避免保存对象并分别添加错误消息,如下所示: "can not be confirmed if it is not checked for 1 and 2" "can not be confirmed if it is not checked for 1" "can not be confirmed if it is not checked for 2" 我该怎么做? 解决方法
这样做怎么样:
state confirmed do validate do if !checkin_1 and !checkin_2 msg = "can not be confirmed if it is not checked for 1 and 2" errors.add(:checkin_1,msg) errors.add(:checkin_2,msg) elsif !checkin_1 errors.add(:checkin_1,"can not be confirmed if it is not checked for 1") elsif !checkin_2 errors.add(:checkin_2,"can not be confirmed if it is not checked for 2") end end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |