2011-08-04 36 views
0

鑑於以下車型Rails 3的遷移update_all /加入

class User 
    has_many :conversations 
end 

class Conversation 
    belongs_to :user 
    has_many :messages 
end 

class Message 
    belongs_to :conversation 
end 

我想刪除對話模型和遷移參照用戶信息。 通常我會使用類似

add_column :messages, :user_id, :integer 

Message.reset_column_information 
Message.all.each do |message| 
    message.user_id = message.conversation.user_id 
end 

remove_column :messages, :conversation_id 

但在代碼進行了更新後運行生產遷移。因此這會引發錯誤。

也許我只是需要一點提示。

回答

0

即使您刪除了屬於:關係的權限,消息仍然應該具有「conversation_id」作爲字段?

那麼,如果你做的事:

message.user_id = User.find_by_id(message.conversation_id).user_id