- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此迁移工作完美
class CreateCourses < ActiveRecord::Migration[6.0]
def change
create_table :courses do |t|
t.references :user, null: false, foreign_key: true
t.string :title, limit: 500, null: false
end
reversible do |dir|
dir.up do
add_column :users, :courses_count, :integer, null: false, default: 0
end
dir.down do
remove_column :users, :courses_count
end
end
end
end
但是当我运行它时它添加了courses_count但它没有在
rails db:rollback
上删除它.
def change
不是可逆迁移的重点吗?反转的方法
add_column
?
class CreateCourses < ActiveRecord::Migration[6.0]
def change
create_table :courses do |t|
t.references :user, null: false, foreign_key: true
t.string :title, limit: 500, null: false
add_column :users, :courses_count, :integer, null: false, default: 0
end
end
end
% rails db:migrate
== 20200815181736 CreateCourses: migrating ====================================
-- create_table(:courses)
-- add_column(:users, :courses_count, :integer)
-> 0.0037s
-> 0.0258s
== 20200815181736 CreateCourses: migrated (0.0259s) ===========================
% rails db:rollback
== 20200815181736 CreateCourses: reverting ====================================
-- drop_table(:courses)
-> 0.0060s
== 20200815181736 CreateCourses: reverted (0.0078s) ===========================
% rails db:migrate
== 20200815181736 CreateCourses: migrating ====================================
-- create_table(:courses)
-- add_column(:users, :courses_count, :integer)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "courses_count" of relation "users" already exists
最佳答案
add_column
needs to be outside create_table
堵塞
def change
create_table :courses do |t|
t.references :user, null: false, foreign_key: true
t.string :title, limit: 500, null: false
end
add_column :users, :courses_count, :integer, null: false, default: 0
end
关于ruby-on-rails - 如何对 add_column 进行可逆迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63442185/
此迁移工作完美 class CreateCourses 0.0037s -> 0.0258s == 20200815181736 CreateCourses: migrated (0.0259
我有以下 Rails 迁移,它运行得很好(删除了不相关的部分): create_table :comments do |t| t.text :body t.references :post e
我有一些 sqlalchemy 查询: >>> items = ( Company.query .add_column(Address.city) .join(Company.
我在 Rails 中创建了此迁移: class AddSocialSecurityNumberToContactTable > a = Contact.find(1) => # >> a.ss_num
我的 rails 版本是 3.2.8 并使用默认数据库。 这是我的迁移代码: class AddQuantityToLineItem 1 end end I find a explaination
我经常希望在特定索引处添加新列; mutate() 没有一个简单的实现,而 add_column() 通过 .before 和 .after 参数实现。我希望这两个函数在简单设置中表现相同,但事实并非
我正在尝试在 Rails 3 中运行迁移,我希望向表中添加一列,代码如下所示: class AddConstAdr < ActiveRecord::Migration def change
我正在尝试向现有 Postgres 表的“位置”列之后添加一个新列“纬度”。 使用此语法将列放在正确的位置: add_column :table, :column, :decimal, :after
我刚刚安装了 South (0.7.3, python-2.6) 并使用 python 解释器成功完成了教程。这意味着我能够创建一个模型并在没有任何错误的情况下迁移它,因此 South 在 pytho
我试图解决在没有锁定的情况下在大型 MySQL 表上添加列的问题,并且在我的开发环境迁移中它起作用了。但是当我在生产环境中启动它时,应用程序引发了 MySQL 错误: Mysql2::Error: L
我是一名优秀的程序员,十分优秀!