【问题标题】:Ransack : Rails 6 > PG::UndefinedTable: ERROR with custom foreign_key definedRansack:Rails 6 > PG::UndefinedTable: 错误定义了自定义外键
【发布时间】:2020-12-23 14:14:23
【问题描述】:

我有 2 个模型。让我们说

  1. 模型A
  2. 模型B

它们之间的关系如下所示

class ModelA < ApplicationRecord
  belongs_to :distributor, class_name: 'ModelB', foreign_key: 'distributor_id'
  belongs_to :asset_manager, class_name: 'ModelB', foreign_key: 'asset_manager_id'
end
class ModelB < ApplicationRecord
end

ModelB 有一个名为“name”的属性,我想从 ModelA 中对其执行搜索

所以当我执行这个查询时:

ModelA.ransack(distributor_name_or_asset_manager_name_cont: "some name")

它会抛出以下错误

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "asset_managers_model_A"

它会尝试在数据库中触发以下查询

model_B.name ILIKE "some name" OR asset_managers_model_A.name ILIKE "some name"

那么,我在这里做错了什么吗?

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-6 ransack


    【解决方案1】:

    看了ransack gem open issues,发现已经报过这个了。我正面临 Rails 6.0.2 和 Ransack 2.4.0 版的问题

    将我的 rails 版本升级到 6.1.0(最新版本)后,一切正常。

    以下是 Ransack gem git hub repo 中打开问题的链接

    1. https://github.com/activerecord-hackery/ransack/issues/1119
    2. https://github.com/activerecord-hackery/ransack/issues/1144
    3. https://github.com/activerecord-hackery/ransack/issues/1182

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2015-03-16
      • 2016-03-18
      • 2015-10-30
      • 1970-01-01
      相关资源
      最近更新 更多