所以我试图创建一个回调,以便在保存之前进行快速验证。
我目前正在尝试做的是验证传递给表单隐藏字段的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中,除了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
从长远来看,了解运算符优先级将对您有所帮助。