这个问题类似于
How do you search for different conditions from the same join table?,但我没有从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`, '')
因此,它会对关系生成不同的查询,因此只有第一个查询才能给出正确的搜索结果。
如何解决这个问题?
提前致谢。
答案 0 :(得分:0)
我使用快捷方法修复它,不确定它是否可以...我定义了第三个关系,其中包含我之前定义的关系,仅用于搜索 并在define_index方法中使用它。