ruby-on-rails 我可以将默认值传递给rails生成迁移吗?

4xrmg8kj  于 2023-04-22  发布在  Ruby
关注(0)|答案(4)|浏览(147)

我想知道我是否可以将一个默认值传递给rails g migration命令。例如:

$ rails generate migration add_disabled_to_users disabled:boolean:false #where false is default value for disabled attribute

以便生成:

class AddDisabledToUsers < ActiveRecord::Migration
  def change
    add_column :users, :disabled, :boolean, default: false
  end
end
tag5nh1u

tag5nh1u1#

你不能:https://guides.rubyonrails.org/active_record_migrations.html#column-modifiers
null和default不能通过命令行指定。
唯一的解决方案是在生成迁移后修改它,Rails3就是这样,Rails7也是这样

xeufq47z

xeufq47z2#

Rails迁移生成器不处理默认值,但是在生成迁移文件之后,您应该使用以下代码更新迁移文件

add_column :users, :disabled, :boolean, default: false

你也可以看到这个链接-http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

jum4pzuy

jum4pzuy3#

Rails中的默认迁移生成器不处理默认值,目前还没有办法在Rails迁移中指定通过终端定义的默认值。
你想按照下面的步骤来实现你想要的
1).执行

$ rails generate migration add_disabled_to_users disabled:boolean

2).通过编辑创建的新移植文件,将新列值设置为TRUE/FALSE。

class AddDisabledToUsers < ActiveRecord::Migration
  def change
    add_column :users, :disabled, :boolean, default: false
  end
end

3).通过执行在生成的迁移之上运行。

$ rake db:migrate
sg24os4d

sg24os4d4#

Rails3.2似乎不支持任何基于http://guides.rubyonrails.org/v3.2/migrations.html的命令行类型修饰符
Rails 4.1的文档提到了类型修饰符,但是Rails 3.2的文档没有在页面中提到“修饰符”这个词。

相关问题