【问题标题】:Can I pass default value to rails generate migration?我可以将默认值传递给 rails 生成迁移吗?
【发布时间】:2014-07-04 01:41:50
【问题描述】:

我想知道是否可以将默认值传递给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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-migrations


    【解决方案1】:

    你不能:https://guides.rubyonrails.org/active_record_migrations.html#column-modifiers

    null和default不能通过命令行指定。

    唯一的解决方案是在生成迁移后对其进行修改。在 Rails 3 中是这样,在 Rails 6 中仍然是这样

    【讨论】:

    • 您提供的链接现在并非特定于 Rails 3。
    【解决方案2】:

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

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

    您也可以查看此链接 - http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

    【讨论】:

    • 我知道以后可以修改迁移了。我想在终端上将默认值作为参数传递。上下文:在我正在做的自定义生成器中:generate "migration add_demo_to_#{table_name} demo:boolean"
    【解决方案3】:

    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)。通过 Executing 运行上面生成的迁移。

    $ rake db:migrate
    

    【讨论】:

    • 正如我对 Deepti Kakade 所说,我知道我可以在之后修改迁移。这不是我问的。
    【解决方案4】:

    Rails 3.2 似乎不支持任何基于http://guides.rubyonrails.org/v3.2/migrations.html 的命令行类型修饰符

    Rails 4.1 的文档引用了type modifiers,但Rails 3.2 的文档没有在页面中提及“修饰符”一词。

    【讨论】:

      猜你喜欢
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      相关资源
      最近更新 更多