我使用的是Rails 4.2和Postgres 9.5
我正在使用下面的迁移,它没有自动添加id列:
class AddCharacteristics < ActiveRecord::Migration
def change
create_table :characteristics do |t|
t.string :name
t.timestamps
end
end
enddb/schema.rb中定义的结果表没有id列:
create_table "characteristics", force: :cascade do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end正如所指出的,id列不在schema.rb中是不成问题的。但是,我无法从控制台访问characteristic对象:
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控制台中,这个查询可以正常工作:
# 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发布于 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!。
参考文献:
https://stackoverflow.com/questions/35093687
复制相似问题