0
使用update_attributes来更新一些属性,我注意到一个特定的属性被设置为null。我如何克服它,以便我可以用它的新值保存对象?为什么rails'update_attributes将param设置为null?
>> i=Item.find 4940
#<Item id: 4940, sku: "ASKU", height: <BigDecimal:7fca72343e08,'0.1E3',9(18)>...>
>> i.sku
"ASKU"
>> i.update_attributes(sku: "3232434")
(0.1ms) BEGIN
false
Item Exists (0.3ms) SELECT 1 AS one FROM `items` WHERE (`items`.`sku` IS NULL AND `items`.`id` != 4940) LIMIT 1
(0.1ms) ROLLBACK
>> i.sku
nil
>> i.errors.messages.inspect
"{:sku=>[\"can't be blank\", \"is too short (minimum is 3 characters)\"]}"
的错误似乎是由说,这PARAM应该存在的验证规则造成的 - 它确实存在 - 在调用时的update_attributes当它似乎消失了,除了!我已经删除了验证规则,它工作正常,除了我现在有一个空值,我需要一个有效的值。
如何保留SKU值并更新对象?
更新解决方案:错误是由我在模型中的一些代码引起的,以确保字段被提高。删除以下固定的一切;
def sku=(s)
super s.upcase!
end