给出以下模型
class User
has_many :conversations
end
class Conversation
belongs_to :user
has_many :messages
end
class Message
belongs_to :conversation
end
我想删除Conversation模型并将对用户的引用迁移到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
但是在生产迁移中,在代码更新后运行。因此,这会引发错误。
可能我只需要一点提示。
答案 0 :(得分:0)
即使您删除了属于:关系权限,消息仍然应该将'conversation_id'作为字段?
那么如果你这样做了:
message.user_id = User.find_by_id(message.conversation_id).user_id
答案 1 :(得分:0)
一个好的解决方案是在迁移中定义一个临时模型 - > Source: Rails Guides