我正在寻找首选方式,以及现有表的唯一列。我还想为表添加一个唯一索引。在添加索引之前,我显然需要向列中添加数据以防止索引创建失败。
情况如下:
class AddUsernameToUsers < ActiveRecord::Migration
def change
add_column :users, :username, :string, null: false
# Need Data here! And don't want to do something like this:
# User.each { |u| u.update_attribute(:username, u.email }
add_index :users, :username, unique: true
end
end
我知道使用ruby代码来填充数据是可能的,有很多例子,但我一直在读它并不是一个好主意。除了类似的东西之外还有其他选择吗?
答案 0 :(得分:0)
以下情况适用于您的情况吗?
class AddUsernameToUsers < ActiveRecord::Migration
def change
add_column :users, :username, :string, null: true
execute("UPDATE users SET username = email")
change_column :users, :username, :string, null: false
add_index :users, :username, unique: true
end
end