我认为没有理由不这样做,但我没有结果。 Contact
有很多OrganizationContacts
。 OrganizationContact
有一个布尔字段primary
。我在这个字段上添加了一个过滤器,如下所示。
class Contact < ActiveRecord::Base
has_many :organization_contacts, :dependent => :destroy
define_index do
has organization_contacts(:primary), :as => :primary_contacts
set_property :delta => true
end
end
在调试会话中,我可以看到我确实有Contact
OrganizationContact
列为primary
:
(rdb:1) p Contact.first.organization_contacts.first.primary
true
但如果我使用该过滤器进行ThinkingSphinx
搜索,我什么也得不到:
(rdb:1) p Contact.search :with => { :primary_contacts => true }
[]
任何人都可以解释一下吗?
答案 0 :(得分:0)
蟋蟀唧唧喳喳。唉,我们想出了一个解决方案。
class Contact < ActiveRecord::Base
has_many :primary_organization_contacts, :class_name => "OrganizationContact", :foreign_key => "contact_id", :conditions => { :primary => true }
has_many :organization_contacts, :dependent => :destroy
define_index do
has primary_organization_contacts(:id), :as => :primary_organization_contacts
set_property :delta => true
end
end
搜索它们是有趣的部分。如果我想要没有主要组织联系人的记录:
Contact.search :with { :primary_organization_contacts => 0 }
如果我想要与至少一个主要组织联系的记录,请联系:
Contact.search :without { :primary_organization_contacts => 0 }
这让我感到肮脏和困惑,但它确实起到了作用。