簡體   English   中英

有關系/聯接的Rails 3 Migration update_all

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM