在我的应用程序中,我使用迁移将一个新行添加到User表,作为users表的外键:
class AddProfileIdToUsersTable < ActiveRecord::Migration
def change
add_column :users, :profile_id, :integer
end
end
然后在使用新创建的profile.id更新用户的profile_id之前,使用一些用户数据填充“个人档案”表:
class MigrateSomeUsersInfoToProfilesTable < ActiveRecord::Migration
def up
User.all.each do |u|
profile = Profile.new({
first_name: u.first_name,
last_name: u.last_name,
bio: u.bio,
address: u.address,
})
profile.save!
u.profile_id = profile.id
u.save!
end
end
end
这成功地在配置文件表中插入值并更新用户表中的profile_id,但它也向每个用户发送电子邮件!这是日志:
2014-06-04 18:43:40.747 [INFO ] Rendered devise/mailer/confirmation_instructions.html.haml (21.5ms) (pid:2)
2014-06-04 18:43:41.725 [INFO ] Sent mail to xxxxxx@gmail.com (974.2ms) (pid:2)
2014-06-04 18:43:43.425 [INFO ] Rendered devise/mailer/confirmation_instructions.html.haml (1.1ms) (pid:2)
2014-06-04 18:43:44.197 [INFO ] Sent mail to yyyyyy@yahoo.com (769.8ms) (pid:2)
....
哪个很烦人!知道如何避免这种情况吗?
由于
答案 0 :(得分:0)
您可以在保存用户之前致电skip_confirmation
class MigrateSomeUsersInfoToProfilesTable < ActiveRecord::Migration
def up
User.all.each do |u|
profile = Profile.new({
first_name: u.first_name,
last_name: u.last_name,
bio: u.bio,
address: u.address,
})
profile.save!
u.profile_id = profile.id
u.skip_confirmation!
u.save!
end
end
end