Rails 6 - 创建一个回调以验证输入的特定文本的问题。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails 6 - 创建一个回调以验证输入的特定文本的问题。相关的知识,希望对你有一定的参考价值。
所以我试图创建一个回调来在保存前进行快速验证。
我目前要做的是验证传递到表单隐藏字段的url参数是否没有被改变,并且正好匹配三个选项中的一个。
业主_运营商,经纪人_托运人或承运人。
目前我已经试过了,但是,即使参数不符合其中一个选项,它仍然允许保存表单... ...
我的回调,因为它现在的位置。
accounts.rb
before_validation :validate_account_type
def validate_account_type
return if account_type == 'owner_operator' || 'broker_shipper' || 'carrier'
end
如果有任何帮助,我将非常感激
答案
你需要检查 account_type
对照每个账户类型的文字。
account_type == 'owner_operator' || 'broker_shipper' || 'carrier'
上述表达式的计算方式如下
(account_type == 'owner_operator') || 'broker_shipper' || 'carrier'
即使 account_type == 'owner_operator'
评价为 false
那么下一个表达式的条件是 broker_shipper
评价为 true
. 所以你的记录总是根据条件有效。
在ruby中,除了 nil
和 false
一切都是 true
.
所以解决方案是
account_type == 'owner_operator' || account_type == 'broker_shipper' || account_type == 'carrier'
再好
ACCOUNT_TYPES = %w(owner_operator broker_shipper carrier)
def validate_account_type
ACCOUNT_TYPES.include? account_type
end
学会运营商的优先权,对你的长远发展会有帮助。
以上是关于Rails 6 - 创建一个回调以验证输入的特定文本的问题。的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 中验证多封电子邮件和处理错误的最佳方法是啥?
在 Rails 5.1 之后,attribute_changed 是如何变化的?更改“验证”回调?
Rails 6.0 在为一种用户创建和更新时验证密码是不是存在,但只为另一种用户更新