您如何conditional or
在思维狮身人面像中使用a ?
情况是:我有一个Message
带有sender_id和receive_id属性的模型。我想组成这个查询:
Message.where("sender_id = ? OR recipient_id = ?", business_id, business_id)
现在,我正在搜索两次,一次搜索所有具有receive_id = business_id的消息,另一次返回所有具有sender_id = business_id的消息。然后我将它们合并。
我觉得有一种更有效的方法可以做到这一点。
编辑-添加索引文件
ThinkingSphinx::Index.define :message, with: :active_record, delta: ThinkingSphinx::Deltas::DelayedDelta do
# fields
indexes body
# attributes
has job_id
has sender_id
has recipient_id
end
Sphinx不允许在属性之间使用OR逻辑,而仅允许使用字段。但是,一种解决方法是将两列合并为第三个属性:
has [sender_id, recipient_id], :as => :business_ids, :multi => true
然后,您可以像这样搜索组合值:
Message.search :with => {:business_ids => business_id}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句