我正在尝试执行查询并查找最近使用 sunspot_solr gem 在多个模型中创建的 20 条记录。目前它没有问题,但我想只为正在搜索的模型之一添加一些额外的验证。
目前在我的用户模型中,它列出了所有创建的新用户,但我只希望它列出已确认其电子邮件地址的用户。我正在使用 Devise 进行用户身份验证并使用活动记录来查找所有尚未确认的用户我会按照以下方式做一些事情:
User.where("confirmed_at is null")
或者反过来测试相反的情况。我试图将它与我的 solr 搜索集成起来......
模型
#Unless the user being searched hasn't been confirmed...
searchable :unless=> proc { |user| user.confirmed_at == nil } do
time :created_at
time :confirmed_at
end
控制器
@updates = Sunspot.search(Upload,Help,User) do
without(:confirmed_at, nil)
order_by(:created_at, :desc)
paginate page: 1, per_page: 20
end
但是,此添加的条件仅消除了在将条件添加到模型后创建的用户记录。我不完全确定索引是如何工作的,但它似乎正在缓存未应用新添加条件的旧信息。我可以通过创建一个新的用户记录来确认这一点,我立即注意到在我验证电子邮件地址之前它不会被索引。
我试过的:
- 停止和重新启动服务器
- 停止服务器并尝试停止并重新启动 solr 但这产生了 PID 找不到错误