【问题标题】:How to alter columns with ActiveRecord in Rails?如何在 Rails 中使用 ActiveRecord 更改列?
【发布时间】:2010-10-03 17:51:45
【问题描述】:

我是 ActiveRecord 的新手。我意识到我忘记为我的一个表中的列添加默认值。我想创建一个迁移来解决这个问题,但我不知道怎么做。迁移期间是否可以调用 alter_column 方法?如果没有,我该怎么办?

编辑:我刚刚尝试使用 change_column,但这会导致如下错误:

-- change_column(:carts, :quantity, :integer, {:default=>1}) -> 0.0097 秒 耙中止! 发生错误,此迁移和所有后续迁移均已取消:

参数数量错误(0 代表 1)

【问题讨论】:

    标签: database activerecord ruby-on-rails-3 migration


    【解决方案1】:

    你可以简单地做一个change_table:

    change_table(:tablename) do |t|
       t.change :name, :string, :default => "something"
    end
    

    编辑:在这种情况下,您可以使用change_column_default

    【讨论】:

    • 这在 Rails 3 中不起作用。它给了我这个错误:'SQLite3::SQLException: duplicate column name: quantity: ALTER TABLE "carts" ADD "quantity" integer DEFAULT 1'跨度>
    • t.change 是不使用t.column 的正确方法,因为它会尝试添加新列。我已经更新了答案。
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多