1

私は現在、ユーザーデータベースに検索フォームを実装しています。 ID、ログイン、メールで検索したいと思います。Searchlogic:ORでスコープを組み合わせたときの奇妙な動作

当然のことながら、私は、スコープを組み合わせてフォームを単純化するのが最善の方法だと思います。そこで、:id_or_login_or_email_likeのtext_fieldを追加しました。

テキストフィールドに数値を入力するとすべて正常に機能します。

しかし、単語を入力して検索を押すと、入力された値はlosedになり、0(ゼロ)に置き換えられ、ID、名前、またはログインに0を持つすべてのユーザーが検索結果に戻ります。

これを修正する方法についてのご意見はありますか?私はRails 2.3.2とSearchLogic 2.4.27を使用しています。 ありがとう!

答えて

1

私は回避策を見つけました。スコープとORを組み合わせるときは、整数値に関連するスコープを最後に置いてください。

:id_or_login_or_email_likeの代わりにlogin_or_email_or_id_likeを使用してください。私はgithubでこの問題を提出しました。

1

これは、あなたの文字列が0に変換されるidと比較すると、スコープが整数との比較を行っているためだと思います。.dupを使用してスコープへの渡した属性が変更されていないことを確認してください。

+1

このような場合は、宝石の問題のように聞こえます。私は本当にその方向に向いていません。私は宝石の著者にあなたの甘さを提出する:) – Dorian

関連する問題