首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails迁移不添加id列

Rails迁移不添加id列
EN

Stack Overflow用户
提问于 2016-01-30 04:42:19
回答 1查看 506关注 0票数 1

我使用的是Rails 4.2和Postgres 9.5

我正在使用下面的迁移,它没有自动添加id列:

代码语言:javascript
复制
class AddCharacteristics < ActiveRecord::Migration
  def change
    create_table :characteristics do |t|
      t.string :name
      t.timestamps
    end
  end
end

db/schema.rb中定义的结果表没有id列:

代码语言:javascript
复制
create_table "characteristics", force: :cascade do |t|
  t.string   "name"
  t.datetime "created_at"
  t.datetime "updated_at"
end

正如所指出的,id列不在schema.rb中是不成问题的。但是,我无法从控制台访问characteristic对象:

代码语言:javascript
复制
2.3.0 :003 >   Characteristic.last
  Characteristic Load (0.3ms)  SELECT  "characteristics".* FROM  "characteristics"  ORDER BY "characteristics"."id" DESC LIMIT 1
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "characteristics" does not exist
LINE 1: SELECT  "characteristics".* FROM "characteristics"  ORDER BY...
                                     ^
: SELECT  "characteristics".* FROM "characteristics"  ORDER BY "characteristics"."id" DESC LIMIT 1

在PSQL控制台中,这个查询可以正常工作:

代码语言:javascript
复制
# SELECT  "characteristics".* FROM "characteristics"  ORDER BY "characteristics"."id" DESC LIMIT 1;
 id | name |         created_at         |         updated_at         
----+------+----------------------------+----------------------------
  1 | test | 2016-01-29 12:58:24.225279 | 2016-01-29 12:58:24.225279
EN

回答 1

Stack Overflow用户

发布于 2016-01-30 04:51:57

不用担心,id列不会显示在schema.rb中,但它们存在于DB中。

例如:https://github.com/everydayrails/rails-4-1-rspec-3-0/blob/master/db/schema.rb

关于我的控制台无法工作的编辑问题是因为我的控制台正在测试中,但我的数据库查询正在开发中

如果您正在使用RSpec,并且希望使开发和测试环境保持同步,那么您可能需要在rails_helper.rb中添加ActiveRecord::Migration.maintain_test_schema!

参考文献:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35093687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档