Ruby on rails 重命名了一个表,我收到了错误
我将一个表命名为Types,并意识到它是一个保留字,所以我将其重命名为“Category” 现在,当我尝试执行ActiveRecord查询时,出现以下错误:Ruby on rails 重命名了一个表,我收到了错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我将一个表命名为Types,并意识到它是一个保留字,所以我将其重命名为“Category” 现在,当我尝试执行ActiveRecord查询时,出现以下错误: PG::UndefinedTable: ERROR: relation "categories" does not exist LINE 5: WHERE a.attrelid = '"categories"'::regclass
PG::UndefinedTable: ERROR: relation "categories" does not exist
LINE 5: WHERE a.attrelid = '"categories"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"categories"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
我已经回顾了我所有的代码,并更改了所有的关系名称、模型、控制器等…但我不知道这个错误是从哪里来的。或者它意味着什么。这是我的category.rb:
class Category < ActiveRecord::Base
has_many :projects
end
下面是我在用户模型中尝试做的事情,因为我希望代码能够按照当前的_user.contributions _by _category阅读
此外,在我的项目模型中,我有:
class Project < ActiveRecord::Base
belongs_to :user, :foreign_key => 'user_id'
belongs_to :category, :foreign_key => 'category_id' #should change this to a has one association
has_many :users
has_many :payments
has_many :updates
has_many :comments
has_one :imapct
....
end
这是我的模式:
ActiveRecord::Schema.define(version: 20150930040619) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "categories", force: :cascade do |t|
t.string "category_type"
end
create_table "comments", force: :cascade do |t|
t.text "content"
t.integer "user_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "entrepreneurs", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "password_digest"
t.text "about"
t.string "location"
t.integer "age"
t.float "repayment_rate"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "impacts", force: :cascade do |t|
t.integer "ppl_hired", default: 0
t.integer "ppl_schooled", default: 0
t.integer "improved_housing", default: 0
t.integer "improved_nourishment", default: 0
t.integer "improved_medical", default: 0
t.integer "community_resource", default: 0
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "payments", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.float "amount"
t.integer "cc_num"
t.integer "exp_month"
t.integer "exp_year"
t.integer "cvs"
t.integer "user_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.text "comments"
end
create_table "projects", force: :cascade do |t|
t.string "name"
t.text "url"
t.text "description"
t.float "money_needed", default: 0.0
t.float "money_raised", default: 0.0
t.float "interest_offered", default: 0.0
t.datetime "end_date"
t.integer "category_id"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "update_comments", force: :cascade do |t|
end
create_table "updates", force: :cascade do |t|
t.text "content"
t.string "url"
t.integer "project_id"
t.string "date"
end
create_table "users", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "user_name"
t.string "password_digest"
t.string "impact"
t.text "pic_url"
t.text "quote"
t.integer "payment_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "admin"
end
数据库的状态如何?试着运行rakedb:resetwill!重置做什么?根据rails文档,rake db:reset任务将删除数据库并重新设置。这在功能上等同于rake db:drop db:setup.:我得到了一个名称错误:未初始化的常量Typecategories肯定是您想要命名表的名称。回滚迁移,更正迁移中的表名,然后重新迁移。还要确保您的db/seeds.rb和代码空间中的所有其他文件没有其他类型的引用。
class Project < ActiveRecord::Base
belongs_to :user, :foreign_key => 'user_id'
belongs_to :category, :foreign_key => 'category_id' #should change this to a has one association
has_many :users
has_many :payments
has_many :updates
has_many :comments
has_one :imapct
....
end
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------------
public | categories | table | seinnaidess
public | comments | table | seinnaidess
public | entrepreneurs | table | seinnaidess
public | impacts | table | seinnaidess
public | payments | table | seinnaidess
public | projects | table | seinnaidess
public | schema_migrations | table | seinnaidess
public | update_comments | table | seinnaidess
public | updates | table | seinnaidess
public | users | table | seinnaidess
ActiveRecord::Schema.define(version: 20150930040619) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "categories", force: :cascade do |t|
t.string "category_type"
end
create_table "comments", force: :cascade do |t|
t.text "content"
t.integer "user_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "entrepreneurs", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "password_digest"
t.text "about"
t.string "location"
t.integer "age"
t.float "repayment_rate"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "impacts", force: :cascade do |t|
t.integer "ppl_hired", default: 0
t.integer "ppl_schooled", default: 0
t.integer "improved_housing", default: 0
t.integer "improved_nourishment", default: 0
t.integer "improved_medical", default: 0
t.integer "community_resource", default: 0
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "payments", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.float "amount"
t.integer "cc_num"
t.integer "exp_month"
t.integer "exp_year"
t.integer "cvs"
t.integer "user_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.text "comments"
end
create_table "projects", force: :cascade do |t|
t.string "name"
t.text "url"
t.text "description"
t.float "money_needed", default: 0.0
t.float "money_raised", default: 0.0
t.float "interest_offered", default: 0.0
t.datetime "end_date"
t.integer "category_id"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "update_comments", force: :cascade do |t|
end
create_table "updates", force: :cascade do |t|
t.text "content"
t.string "url"
t.integer "project_id"
t.string "date"
end
create_table "users", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "user_name"
t.string "password_digest"
t.string "impact"
t.text "pic_url"
t.text "quote"
t.integer "payment_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "admin"
end