0

这个问题类似于

如何从同一个连接表中搜索不同的条件?,但我没有从this.z得到解决方案

我的代码

has_one    :insurance_type_link, as: :enumerable, class_name: "Utility::UserDefinedEnumLink",
         conditions: {user_defined_enum_links: {user_defined_enum_id: Utility::UserDefinedEnum.insurance_types.map(&:id)}}
has_one    :payment_duration_link, as: :enumerable, class_name: "Utility::UserDefinedEnumLink",
         conditions: {user_defined_enum_links: {user_defined_enum_id: Utility::UserDefinedEnum.payment_durations.map(&:id)}}

我的 define_index 有这个

indexes insurance_type_link.user_defined_enum.enum_value,  as: :it, sortable: :insensitive
indexes payment_duration_link.user_defined_enum.enum_value, as: :pd, sortable: :insensitive

在 development.sphinx.conf 内部生成的 sql 查询是

AS `it_sort`, LOWER(IFNULL(`user_defined_enums_user_defined_enum_links`.`enum_value`, '')) 
AS `pd_sort`, IFNULL(`user_defined_enums`.`enum_value`, '')

所以它对这两个关系生成不同的查询,结果只有第一个查询给了我正确的搜索结果。

如何解决这个问题?

提前致谢。

4

1 回答 1

0

我使用捷径方法修复它,不确定它是否可以...我定义了第三个关系,其中包括我之前定义的关系,只是为了搜索并在 define_index 方法中使用它。

于 2013-04-04T07:04:09.387 回答