Ruby on rails 语句无效的SQLite3::SQLException:没有这样的列。将标签系统添加到博客时
所以我决定在我的RoR博客中建立一个标签系统。在阅读了《rails入门指南》之后,我将继续阅读JumpstartABS的一篇文章 在这里,我基本上是使用“连接表”方法来映射多个post有多个标记,多个标记有多个post关系 这就是我得到的错误Ruby on rails 语句无效的SQLite3::SQLException:没有这样的列。将标签系统添加到博客时,ruby-on-rails,ruby,tagging,Ruby On Rails,Ruby,Tagging,所以我决定在我的RoR博客中建立一个标签系统。在阅读了《rails入门指南》之后,我将继续阅读JumpstartABS的一篇文章 在这里,我基本上是使用“连接表”方法来映射多个post有多个标记,多个标记有多个post关系 这就是我得到的错误 ActiveRecord::StatementInvalid in Posts#show Showing /home/nadia/blog/app/views/posts/show.html.erb where line #8 raised:
ActiveRecord::StatementInvalid in Posts#show
Showing /home/nadia/blog/app/views/posts/show.html.erb where line #8 raised:
SQLite3::SQLException: no such column: taggings.post_id: SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."post_id" = ?
Extracted source (around line #8):
6 <p>
7 Tags:
8 <% @post.tags.each do |tag| %>
9 <%= link_to tag.name, tag_path(tag) %>
10 <% end %>
11 </p>
如果您想查看其他文件,请告诉我。我希望得到一些帮助,因为这是我的第一个真正的项目。:)
编辑。我的标签
1 class Tagging < ActiveRecord::Base
2 belongs_to :tag
3 belongs_to :post
4 end
1类标记
我在Taggings.rb文件中发现了一个拼写错误/复数
belongs_to :posts
然后我改成了
belongs_to :post
然而,重要的是我忘记了我必须重新运行迁移来重新命名列的名称。我通过运行
Tagging.column_names
发现该列实际上命名错误:posts\u id
跑步后
rake db:migrate
使用fixed Tagging.rb文件,它通过重新命名该列修复了问题
非常感谢各位
我真的很感谢你的帮助。在过去的几天里,我学到了很多,试图解决这个小问题 您的
@post
可能会返回一个nil
标记列表
。为什么要使用文本字段呢?(记住@post.tag_list
将被调用)。(检查)对你说实话,我是按照指示做的,他们不太清楚你为什么这么做。我在这一点上的知识还不足以理解其中的原因。SQLite3::SQLException:没有这样的专栏:taggings.post_id
正好说明了问题所在。您的标记模型应具有post\u id
和tag\u id
以正确引用多对多关系。你的模式怎么说?(我不明白我之前的评论,我想你编辑了错误)。哦,我明白了。我假设通过说Tagging属于:tag和:post,这将为我提供连接表所需的外键?或者,这是我通过在迁移中定义一个变更方法手动完成的吗?+1是为了关心自己的问题。一定要接受它。
1 class Tagging < ActiveRecord::Base
2 belongs_to :tag
3 belongs_to :post
4 end
belongs_to :posts
belongs_to :post
Tagging.column_names
rake db:migrate