我的一个模型中有一个名为 currentBalance 的虚拟属性。在我看来,一个 ajax 调用填充了这个属性。在模型中,我试图验证 net_weight 是否小于或等于 currentBalance,它表示库存中产品的总净重。
问题似乎是 net_weight 是一个浮点数,而 currentBalance 属性以字符串形式返回,导致出现异常:
浮点数与字符串的比较失败
这是选择产品时填充 currentBalance 输入字段的 jquery:
$( ".fields" ).each( function(){
<% @currentBals.each do |c| %>
if( $(this).find("option:selected").text() == '<%= c.material %>' ) {
$(this).find("input:text[readonly]").val("<%= number_with_delimiter(c.currentBal) %>")
} else {
if ($(this).find("option:selected").text() == 'Select Material'){
$(this).find("input:text[readonly]").val("<%= number_with_delimiter(0) %>")
}
}
<% end %>
});
这是模型中的验证代码:
validates :net_weight, presence: true, numericality: { greater_than: 0.0, less_than_or_equal_to: :currentBalance }
我认为 number_with_delimiter 格式化语句导致了问题。但我希望在视图中格式化该值。
如何在验证运行之前更改验证或将 currentBalance 属性转换为浮点数?