Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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 如何使用现有数据创建新的非空列?_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 如何使用现有数据创建新的非空列?

Ruby on rails 如何使用现有数据创建新的非空列?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在一个表中创建一个新列,它是uuid/guid 添加列:users,:uuid,:string,null:false 我正在使用以下方法设置uuid: SecureRandom.uuid 迁移失败,因为现有数据没有任何值 如何在此迁移期间为每个具有新uuid的用户设置值?添加not null列时,您有两个选项: 提供一个DB默认值 添加一个可为null的列,更新所有数据,将该列更改为不可为null 根据您使用的数据库,它可能允许或不允许您将表达式设置为默认值 既然你提到你正在使用Postg

我正在一个表中创建一个新列,它是uuid/guid

添加列:users,:uuid,:string,null:false

我正在使用以下方法设置uuid:

SecureRandom.uuid
迁移失败,因为现有数据没有任何值


如何在此迁移期间为每个具有新uuid的用户设置值?

添加not null列时,您有两个选项:

  • 提供一个DB默认值
  • 添加一个可为null的列,更新所有数据,将该列更改为不可为null
  • 根据您使用的数据库,它可能允许或不允许您将表达式设置为默认值

    既然你提到你正在使用Postgres,你可以阅读更多 用于提供默认值的Rails语法将是

    default: -> { 'uuid_generate_v1()' }
    

    添加非空列时有2个选项:

  • 提供一个DB默认值
  • 添加一个可为null的列,更新所有数据,将该列更改为不可为null
  • 根据您使用的数据库,它可能允许或不允许您将表达式设置为默认值

    既然你提到你正在使用Postgres,你可以阅读更多 用于提供默认值的Rails语法将是

    default: -> { 'uuid_generate_v1()' }
    

    你忽略了提到你正在使用的数据库软件…MySQL?SQL小姐?PostGre?@mrunion我在用postgres。你忘了提到你在用什么数据库软件……MySQL?SQL小姐?PostGre?@Union先生我在用postgres。