ruby-on-rails - Rails activerecord 正在查询 HABTM 关联中的错误列名

标签 ruby-on-rails postgresql model-view-controller many-to-many

我有两个模型,列表和类别,具有多对多关系,有一个名为 categories_lists 的连接表。当我尝试获取单个列表所属的所有类别时,出现以下错误:

PG::UndefinedColumn: ERROR: column categories_lists.category_id does not exist LINE 1: ...ER JOIN "categories_lists" ON "categories"."id" = "categorie... ^ HINT: Perhaps you meant to reference the column "categories_lists.categories_id"...

查看:

<ul>
  <% @categories.each do |cat| %>
  <li><%= cat.title %></li>
  <% end %>
</ul>

Controller :

def show
  @categories = List.find(params[:id]).categories.all
end

型号:

class List < ApplicationRecord
  has_and_belongs_to_many :categories
end

表格:

describe categories_lists                                                                                                                                  
+---------------+--------+-------------+
| Column        | Type   | Modifiers   |
|---------------+--------+-------------|
| categories_id | bigint |             |
| lists_id      | bigint |             |
+---------------+--------+-------------+

它使类别成为单数,而不是按照其在模型中定义的方式保持复数。我不知道如何纠正这个。

想法?

最佳答案

外键的默认值是单数,你在你的表中弄错了。

您可以在表中将其更改为 category_idlist_id,或者在您的 habtms 中指定非标准 fkeys(同时设置 :foreign_key:association_foreign_key 选项),例如。

has_and_belongs_to_many :categories, association_foreign_key: :categories_id, foreign_key: :lists_id

更新

从 OP,他们使用的迁移:

class ChangeColumnNamesCategoriesLists < ActiveRecord::Migration[5.2]
  def change
    rename_column :categories_lists, :categories_id, :category_id 
    rename_column :categories_lists, :lists_id, :list_id
  end
end

关于ruby-on-rails - Rails activerecord 正在查询 HABTM 关联中的错误列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57795272/

相关文章:

postgresql - 配置数据库后,从 zip 文件安装 Postgres 命令行无法正确启动 Windows 服务

wpf - 愚蠢的 F#\WPF 错误 - 命名空间 "The Name ' 中不存在 'xyz' abc',即使 Intellisense 看到它

c# - 错误请求 - 无效 URL - HTTP 错误 400。请求 URL 无效

ruby-on-rails - Rails CSRF 保护 + Angular.js : protect_from_forgery makes me to log out on POST

ruby-on-rails - 亚马逊 opsworks 中带换行符的环境变量

ruby-on-rails - 为什么我的 Rails 哈希键符号出现问题?

javascript - 处理 Bootstrap 表中 URI 的错误

ruby-on-rails - Sublime Text 3 中多行代码的语法突出显示问题(Ruby on Rails & Haml)

java - 使用 PostgreSQL,为什么 Hibernate/JPA 不创建级联约束?

postgresql - Postgres 检索约束的名称