我有以下Rails 3遷移,它將一個列game_type添加到名爲games的表中。它應該根據live是否爲true來更新game_type的值,但是這個值永遠不會被保存。使用Model.update_attributes時,模型不會保存更改! Rails 3遷移期間
class AddGameTypeToGames < ActiveRecord::Migration
class Game < ActiveRecord::Base
end
def up
say "Adding game_type column to Games table"
add_column :games, :game_type, :string, :null => false, :default => 'Demo'
say_with_time "Migrating live value into game_type column" do
rows_affected = 0
Game.all.each do |game|
if game.live
game.update_attributes!(:game_type => 'Live')
rows_affected += 1
end
end
rows_affected
end
end
end
我最終得到了這個改變這一行game.update_attributes!(:game_type => 'Live')
到Game.connection.execute("UPDATE games SET game_type='Live' where id = #{game.id}")
工作。
我想知道爲什麼update_attributes!不會工作?我有其他遷移,這工作正常。包括該模型應該阻止驗證進入遷移路線。我試圖在遷移中的遊戲模型上設置attr_accessible :game_type
,但這不起作用。
謝謝你,對我來說是一個愚蠢的疏忽。 – 2012-07-27 14:49:06