【问题标题】:How to generate migration to change database column in Rails如何生成迁移以更改 Rails 中的数据库列
【发布时间】:2015-08-28 13:58:02
【问题描述】:

我想知道是否有一种方法可以生成迁移,其更改方式与创建表、添加或删除列的方式相同。

例如用于创建我将使用的表:

rails generate migration CreateProducts name:string part_number:string

为了添加我会使用的列:

rails generate migration AddUserRefToProducts user:references

我从Rails Guides 中获取了这个示例,但我找不到任何可以更改列的内容,比如说设置一个默认值。

【问题讨论】:

  • 链接上的第 3.4 节“更改列”?
  • 它显示了如果你有一个迁移文件如何设置它,但我想知道如果有创建这个文件的任务。
  • "rails g migration" -- 还是说脚手架?
  • 我不这么认为。脚手架(就是这样)对于设置大量文件非常有益,因此当您使用脚手架创建表/模型时,它也可以创建测试、控制器、视图等。如果您要更改列,那么除了编写迁移文件之外,没有太多工作要做。
  • 不可能。 create_table_migration.rbmigration.rb 模板可以帮助使用 create_tableadd_column 等命令构建文件,但不是 change_column。使用 change_column 的迁移必须手动构建。

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


【解决方案1】:

来自Rails Migrations

  • change_column(table_name, column_name, type, options):使用与 add_column 相同的参数将列更改为不同的类型。

例如,在您的迁移中:

class ChangeColumnInTablename < ActiveRecord::Migration
  def change
    change_column :tablename, :field, :string , default: <default_value>
  end
end

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2016-08-23
    • 2011-02-17
    • 2012-02-17
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2014-07-04
    • 2013-02-16
    相关资源
    最近更新 更多