1
我試圖更新一些最小和最大的字段,所以這是一個留空,然後從另一個值複製的值。到目前爲止,我有:Ruby On Rails update_all測試條件不相等
Item.update_all({:min = :max}, {:min => nil, :max !=> nil})
因爲這兩個領域可能是nil
我不管他們是但!=>
是不正確的。我將如何去測試不等於使用這種風格的條件?
我試圖更新一些最小和最大的字段,所以這是一個留空,然後從另一個值複製的值。到目前爲止,我有:Ruby On Rails update_all測試條件不相等
Item.update_all({:min = :max}, {:min => nil, :max !=> nil})
因爲這兩個領域可能是nil
我不管他們是但!=>
是不正確的。我將如何去測試不等於使用這種風格的條件?
這不是哈希的有效ruby語法。
嘗試:
Item.update_all("min = max", "min IS NULL AND max IS NOT NULL")
或者:
Item.where("min IS NULL AND max IS NOT NULL").update_all("min = max")
有什麼優勢或者這些還是他們產生相同的SQL? – DrYap 2012-08-09 11:57:28
他們產生完全相同的查詢。我的個人偏好是第二種選擇,因爲它更具可讀性並允許使用範圍。例如'scope has_only_max,lambda {where(「min IS NULL and max IS NOT NULL」)}' 然後您可以這樣做:'Item.has_only_max.update_all(「min = max」) – 2012-08-09 12:03:28