如何通过*一次*加入列进行数据更新?

时间:2013-06-17 15:35:16

标签: ruby-on-rails activerecord migration

我正在使用Rails 3.2.x + AR项目中的现有数据向现有模型添加新关联。

迁移脚本:

class AddUserToSignups < ActiveRecord::Migration
  def up
    add_column :signups, :user_id, :integer, :default => nil
    add_index :signups, :user_id
    # UPDATE SIGNUPS S JOIN USERS U ON S.EMAIL=U.EMAIL SET S.USER_ID = U.ID
  end
  def down
    drop_column :signups, :user_id
  end
end

如何根据上述评论与AR进行联接更新?我来自续集ORM背景,所以Sequel的方法是:

DB[:signups___s].join(:users___u, :u__id => :s__user_id).update(:s__user_id => :u__id)

1 个答案:

答案 0 :(得分:1)

def up
    add_column :signups, :user_id, :integer, :default => nil
    add_index :signups, :user_id
    ActiveRecord::Base.connection.execute("UPDATE SIGNUPS S JOIN USERS U ON S.EMAIL=U.EMAIL SET S.USER_ID = U.ID")
end