所以我试图创建一个回调来在保存前进行快速验证。
我目前要做的是验证传递到表单隐藏字段的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
学会运营商的优先权,对你的长远发展会有帮助。