我想將answers
表中的內容與ActiveRecord交換。
代碼1:無法使用ActiveRecord更新屬性
Archieve::Answer.find_each do |answer|
str = answer.content
dosomething() #change the value
answer.update_attribute(:content,str)
end
但它不會改變的內容的價值。
代碼2:
Archieve::Answer.find_each do |answer|
str = answer.content
dosomething() #change the value
answer.reload
answer.update_attributes(
:content => str
)
end
更新之前的:content
屬性,我reload
每次記錄。
它的確可以改變這個值。
爲什麼?
code 1
& code 2
有什麼區別?
Source Code
###1 Post Debug Message:
Updated Post:
Changed?: false
valid?: true
errors: #<ActiveModel::Errors:0xa687568>
errors: #<ActiveModel::Errors:0xa687568 @base=#<Archieve::Answer id: 9997190932758339, user_id: 4163690810052834, question_id: 3393286738785869, content: "狗狗生病,好可憐呀,", is_correct: false, votes_count: 0, comments_count: 0, created_at: "2011-11-06 18:38:53", updated_at: "2011-11-06 18:38:53">, @messages={}>
其ActiveRecord的版本,您使用的?例如哪個Rails版本? – Tilo
@Tilo Rails和ActiveRecord的版本都是'3.1.1'。 –
@Tilo看起來對象沒有改變,我只改變了'str'的值。 –