gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:49:26 25 4
gpt4 key购买 nike

我有两个模型,列表和类别,具有多对多关系,有一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com