将has_many关系转换为has_and_belongs_to_many的最佳方法是什么?

时间:2014-03-13 15:48:33

标签: ruby-on-rails database-migration

我的应用中有一个has_many关系。例如部门有很多用户。 我想将它转换为has_and_belongs_to_many关系。 作为迁移的一部分,我需要保留用户和部门之间的当前关系,这意味着我必须将所有数据移动到新的连接表。 这是我创建的迁移:

class CreateUserDepartment < ActiveRecord::Migration
  def change
    create_table :users_departments do |t|
      t.belongs_to :user
      t.belongs_to :department
    end

    ###############################################
    # need to move the data to the new table here #
    ###############################################

    remove_column :users, :sub_department_id
  end

end

写缺失线的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果必须,您可以使用execute "your SQL"。看到这个问题:

How do I add some inserts in rails migration?

该问题的“请勿”回答的主要价值在于解释为什么您不想使用模型来执行此操作。另外,如果您能够或希望使用change执行此操作,我会感到惊讶,您可能需要使用self.up