Rails6-创建回调以验证输入的特定文本的问题



所以我试图创建一个回调,以便在保存之前进行快速验证。

我目前正在尝试做的是验证传递给表单隐藏字段的url参数是否没有更改,并且与以下三个选项中的一个完全匹配:

所有者_运营商、经纪人_发货人或承运人

目前我已经尝试过了,但是,即使参数dosnt与其中一个选项匹配,它仍然允许保存表单。。。

我现在的回拨。

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中,除了nilfalse之外,所有内容都是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

从长远来看,了解运算符优先级将对您有所帮助。

最新更新