在Rails迁移中使用模型字段作为默认值

时间:2016-03-18 14:54:58

标签: ruby-on-rails ruby-on-rails-4

在我的Rails 4应用程序中,我想在我的用户模型中添加一个“用户名”字段。由于我已在数据库中拥有用户,因此我想将他们的电子邮件(目前是该模型的一部分)用作我迁移中的默认用户名。这是我到目前为止所做的:

class AddUsernameColumnToUsers < ActiveRecord::Migration
  def change
    add_column :users, :username, :string, null: false
    add_index :users, :username, unique: true
  end
end

所以,我想做类似的事情:

add_column :users, :username, :string, null: false, default: this.email

但该代码无效。有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

你可以像这样解决它

class AddUsernameColumnToUsers < ActiveRecord::Migration
  def up
    add_column :users, :username, :string, null: false
    add_index :users, :username, unique: true
    query = 'UPDATE users SET username = email'
    ActiveRecord::Base.connection.execute(query)
  end
  def down
    remove_column :users, :username
  end
end