我使用ENVS列舉如下:Rails ActiveRecord update_attributes!不工作
Mysql: 5.1.51-community MySQL Community Server
Rails: 2.3.5
Ruby: 1.8.7
有一個記錄,我得到的項目,然後我用下面的代碼來更新屬性,
item.update_attributes!(
:a => a,
:b => b,
:c => c
)
所有這些更新屬性只有字段的值發生了變化,其他屬性值保持不變,但我不知道哪些屬性發生了更改,所以我更新了所有屬性。
在調試過程中,我發現該字段的值發生了變化,這與記錄項的值不同,但更新沒有任何效果。
有人可以幫我嗎?謝謝。
補充:
剛纔我跟蹤到Rails代碼,並且發現該問題與Rails代碼此相關的:如果我改變了場分貝值清空
def update(attribute_names = @attributes.keys)
quoted_attributes = attributes_with_quotes(false, false, attribute_names)
return 0 if quoted_attributes.empty?
connection.update(
"UPDATE #{self.class.quoted_table_name} " +
"SET #{quoted_comma_pair_list(connection, quoted_attributes)} " +
"WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quote_value(id)}",
"#{self.class.name} Update"
)
end
,然後attribute_names是包含字段a的數組,但db中的值不爲空的字段,attribute_names是空數組,但@attributes始終是包含a,b和c的映射。看到rails代碼後感到困惑。
沒有足夠的信息給出 - 我們需要至少該模型能夠正確回答這個問題。 – 2011-01-11 13:04:40
我還應該提供哪些信息?謝謝你。 – ywenbo 2011-01-11 13:07:01