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