[英]Rails 3 Migration update_all with relation / join
給定以下模型
class User
has_many :conversations
end
class Conversation
belongs_to :user
has_many :messages
end
class Message
belongs_to :conversation
end
我想刪除會話模型,並將對用戶的引用遷移到Message。 通常我會用類似
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
但是在生產遷移中,更新代碼后才運行。 因此,這將引發錯誤。
可能我只需要一點提示。
即使您刪除了近親的關系,消息仍應具有'conversation_id'作為字段。
那么,如果您這樣做:
message.user_id = User.find_by_id(message.conversation_id).user_id
一個好的解決方案是在遷移過程中定義一個臨時模型-> 來源:Rails指南
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.