クエリを実行して、sunspot_solr gem を使用して複数のモデルで最近作成された 20 のレコードを見つけようとしています。現在は問題ありませんが、検索されたモデルの 1 つだけに追加の検証を追加したいと考えていました。
現在、私の User モデルでは、作成されたすべての新しいユーザーをリストしていますが、メールアドレスを確認したユーザーのみをリストしたいです。ユーザー認証に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 が見つからないというエラーが発生しました