【发布时间】:2016-01-30 06:13:49
【问题描述】:
我使用的是 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
end
db/schema.rb 中定义的结果表没有 id 列:
create_table "characteristics", force: :cascade do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
正如所指出的,不在 schema.rb 中的 id 列不是问题。但是我无法从控制台访问特征对象:
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
【问题讨论】:
-
请检查您的 Rails 控制台,如
Characteristic.column_names。id不会出现在 schema.rb 中.. -
id列在数据库中但是控制台不工作
-
不工作是什么意思?
标签: ruby-on-rails ruby postgresql activerecord