2

アクティブなユーザーを表示する簡単なクエリがありますが、どういうわけか非アクティブなユーザーが表示されます。スフィンクスを使用しています。クエリは次のようになります。

User.search keywords,:conditions=>conditions, :match_mode=>:boolean, :order =>sort_order.to_s, :page => page,:per_page =>per_page

条件ハッシュは次のようになります。

conditions = {:is_expired => false, :is_disabled => false,...}

条件には:is_expired => false が含まれますが、:is_expired = true を持つユーザーをフェッチします。

有効期限が切れていないレコードのみを取得するにはどうすればよいですか?

4

3 に答える 3

2

ThinkingSphinx をチェックする

于 2009-11-25T16:28:55.190 に答える
1

is_expired および is_disabled メソッドに必ずインデックスを付けてください。すでに行っている場合は、お詫び申し上げます。

于 2009-11-25T08:23:44.513 に答える
1

列のタイプをブール値から整数に変更したところ、機能し始めました!

編集:実際には、本番環境ではなく、ローカルで動作し始めました。最後に、コマンド RAILS_ENV=production rake thinking_sphinx:index を実行した出力を調べたところ、次のような行が表示されていました: ERROR: index 'user_core': failed to create /path/to/application/production/user_core.spm: Permission拒否された。

次に、ファイルのアクセス許可が、index コマンドを実行するユーザーではなく「ルート ルート」であることがわかりました。これは、デプロイヤーが「sudo su -」などを実行してデプロイし、作成された新しいファイルが作成者などとしてルートになったためです。ファイルを削除する必要があり、index コマンドを実行した後に正しく機能し始めました。ただし、整数列タイプからブール値に戻すことができるかどうかはわかりません。

于 2009-11-25T14:03:50.520 に答える