gpt4 book ai didi

mysql - Rails 搜索错误的 has_and_belongs_to_many 表

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

我想在文档表单的选择框中显示与特定组织相关的所有类型。类型是 Ar 引擎的一部分。组织是另一个现有引擎的一部分。

module Ar
module OrganisationPatch
extend ActiveSupport::Concern
included do
attr_accessible :ar_document_id

has_many :ar_documents, :class_name => 'Ar::Document'
has_and_belongs_to_many :ar_types, :class_name => 'Ar::Type'
end
end
end
<小时/>
module Ar
class Type < ActiveRecord::Base
attr_accessible :name

has_many :documents
has_and_belongs_to_many :organisations
end
end
<小时/>
class CreateTypeOrganisations < ActiveRecord::Migration
def change
create_table :ar_type_organisations, id: false do |t|
t.uuid :type_id, index: true
t.uuid :organisation_id, index: true
end
end
end

在我的文档 Controller 中,我加载有关 before 过滤器的表单类型。上级返回组织对象:

def load_form_objects
unless current_user.admin?
@types = current_user.superior.ar_types
else
@types = Type.all
end
end

调用该页面时,我收到此错误并询问我为什么他要查找名为 Organizations_types 的表:

ActiveRecord::StatementInvalid in Ar/documents#new

Mysql2::Error: Table 'portal.organisations_types' doesn't exist: SELECT ar_types.* FROM ar_types INNER JOIN organisations_types ON ar_types.id = organisations_types.type_id WHERE organisations_types.organisation_id = x'891c3986b33845d08d3951645a4f27d5'

有人知道我在这里做错了什么吗?

最佳答案

您的表名与 has_and_belongs_to_many 所期望的词汇顺序不匹配。 (预期顺序为organizations_types)

因此,您必须在两个模型的关联中添加 :join_table 选项。像这样,

has_and_belongs_to_many :ar_types, :class_name => 'Ar::Type', join_table: "ar_type_organisations"

has_and_belongs_to_many :organisations, join_table: "ar_type_organisations"

Reference

关于mysql - Rails 搜索错误的 has_and_belongs_to_many 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33103167/

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