Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails迁移中使用模型字段作为默认值_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

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

Ruby on rails 在Rails迁移中使用模型字段作为默认值,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在我的Rails4应用程序中,我想在我的用户模型中添加一个“username”字段。由于数据库中已经有用户,我希望在迁移中使用他们的电子邮件(目前是模型的一部分)作为默认用户名。以下是我目前掌握的情况: class AddUsernameColumnToUsers < ActiveRecord::Migration def change add_column :users, :username, :string, null: false add_index :users

在我的Rails4应用程序中,我想在我的用户模型中添加一个“username”字段。由于数据库中已经有用户,我希望在迁移中使用他们的电子邮件(目前是模型的一部分)作为默认用户名。以下是我目前掌握的情况:

class AddUsernameColumnToUsers < ActiveRecord::Migration
  def change
    add_column :users, :username, :string, null: false
    add_index :users, :username, unique: true
  end
end
但该代码无效。有什么想法吗?提前谢谢。

你可以这样解决它 类AddUsernameColumntUsers

我不得不做一些轻微的调整,以避免null:false约束:
code
add\u列:users,:username,:string query='updateusers SET username=email'ActiveRecord::Base.connection.execute(query)add\u index:users,:username,unique:true change\u列:users,:username,:string,:null=>false
code
add_column :users, :username, :string, null: false, default: this.email
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