我有两个模型。比方说
- 型号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"
那么,我在这里做错了什么吗?
在查看了transak-gem的开放问题后,我发现这已经被报告了。我面临的问题是Rails6.0.2和Ransack 2.4.0版本
在将我的rails版本升级到6.1.0(最新版本(后,一切都很好。
以下是Ransack gem git hub回购中公开发行的链接
- https://github.com/activerecord-hackery/ransack/issues/1119
- https://github.com/activerecord-hackery/ransack/issues/1144
- https://github.com/activerecord-hackery/ransack/issues/1182