PG::Error: 错误: 列 tutorials.tutorialcategory_id 不存在
Posted
技术标签:
【中文标题】PG::Error: 错误: 列 tutorials.tutorialcategory_id 不存在【英文标题】:PG::Error: ERROR: column tutorials.tutorialcategory_id does not exist 【发布时间】:2015-11-18 08:15:34 【问题描述】:我有两个模型 'Tutorial' 和 'Tutorialcategory'
class Tutorialcategory < ActiveRecord::Base
has_many :tutorials
class Tutorial < ActiveRecord::Base
belongs_to :tutorialcategory
教程与 html、rubyonrails 等多个类别相关联,其中 html 和 ruby on rails 是教程类别
以下是迁移
class CreateTutorials < ActiveRecord::Migration
def change
create_table :tutorials,force: true do |t|
t.string :title
t.text :body
t.integer :rating
t.string :videoid
t.belongs_to :tutorialcategory
t.timestamps
end
end
end
class CreateTutorialcategories < ActiveRecord::Migration
def change
create_table :tutorialcategories do |t|
t.string :title
t.timestamps null:false
end
end
end
所有教程都在索引页面上正确列出,但是当我看到类别页面时,它给了我以下错误
PG::Error: ERROR: column tutorials.tutorialcategory_id does not exist
【问题讨论】:
您是否记得在创建迁移后运行rake db:migrate
?
是的,我做到了,我可以添加教程。
@Vikram 你检查了this 线程吗?希望能有所帮助。
【参考方案1】:
我不知道您为什么将模型命名为 Tutorialcategory
而不是 TutorialCategory
,后者遵循 Rails 命名约定并使其更易于理解。
首先,一步回滚你的数据库
rake db:rollback
将您的迁移文件更改为:
class CreateTutorials < ActiveRecord::Migration
def change
create_table :tutorials,force: true do |t|
t.string :title
t.text :body
t.integer :rating
t.string :videoid
t.belongs_to :tutorial_category, index: true
t.timestamps
end
end
end
class CreateTutorialCategories < ActiveRecord::Migration
def change
create_table :tutorial_categories do |t|
t.string :title
t.timestamps null:false
end
end
end
再次运行迁移并编辑您的模型以匹配新架构。
class TutorialCategory < ActiveRecord::Base
has_many :tutorials
class Tutorial < ActiveRecord::Base
belongs_to :tutorial_category
【讨论】:
是的,他没有使用正确的命名约定,但为什么仍然出错?看起来代码很完美不是吗? @Guru 同意。但是当我们不知道的时候,让我们试试看是否遵循命名约定,因为 Rails 的方式使它工作:convention over configuration
我想我非常接近它,只是不知道如何将多个连接到多个。根据 rails doc belongs_to 是一对多的,但我有很多可以用 has_and_belongs_to_many 完成,但是我将如何获得一个类别的列表教程。
问题是一对多的,代码也显示相同。无论如何,如果您想实现 m2m,请使用 has_many。告诉我你是否卡在任何地方以上是关于PG::Error: 错误: 列 tutorials.tutorialcategory_id 不存在的主要内容,如果未能解决你的问题,请参考以下文章
错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在
PG::Error: SELECT DISTINCT, ORDER BY 表达式必须出现在选择列表中
尝试部署到 heroku 时出错(按照 ror 教程)PG::Error: ERROR: column "password_digest" of relationship &quo