ruby-on-rails - Ransack:Rails 6 > PG::UndefinedTable: 错误定义了自定义外键
问题描述
我有2个模型。让我们说
- 模型A
- 模型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"
那么,我在这里做错了什么吗?
解决方案
在查看了ransack gem open issues 之后,我发现这已经被报告了。我正面临 Rails 6.0.2 和 Ransack 版本 2.4.0 的问题
将我的 rails 版本升级到 6.1.0(最新版本)后,一切正常。
以下是 Ransack gem git hub repo 中打开问题的链接
推荐阅读
- python-3.x - 有没有一种优雅的方法可以将熊猫系列的 datetime timedeltas 转换为格式化的字符串?
- python - Crispy Fields 不起作用,但 Crispy Form 可以
- python - 按时间序列将单独的数据集合并到一张表中,在仅存在一张表的地方添加新行
- windows - x64 mov 而不是推送序列
- node.js - 猫鼬 if (!this.modelSchemas[name]) 错误
- android - 发现两个属性区分大小写冲突的 getter 或字段:电子邮件
- jquery - jquery 切换只工作一次并且不会关闭
- node.js - 反应和节点 js ::ERR_CONNECTION_REFUSED
- algorithm - 这个算法的时间复杂度是多少?
- firebase - 从电子邮件和密码迁移到 Firebase 电话身份验证