Rails2.3.4とともにバージョン2.3.5の「binarylogic-searchlogic」gemを使用しています。
私がやりたいのは、複数の属性に対して指定された値をモデルで検索することです。私はこれを次のようにすべてを連鎖させることで達成します
User.first_name_or_last_name_or_email_like(value)
しかし、この検索で属性が増えると、これは醜い傾向があります。代わりに、次のようなsearchlogicの検索メカニズムを使用したいと思います。
search = User.search
search.first_name_like = value
search.last_name_like = value
..
@users = search.all
つまり、これはANDを介して検索する方法ですが、私が欲しいのはORです。これを実現する方法は2つありますが、どちらも機能しません。
1つ目:条件の前にor_を追加します
search = User.search
search.first_name_like = value
search.or_last_name_like = value
@users = search.all
これは私に与えますThe or_last_name_like is not a valid condition. You may only use conditions that map to a named scope
2つ目:使用search.any
search = User.search
search.first_name_like = value
search.last_name_like = value
@users = search.any
undefined method
#`に'を与えてくれます。
何かアイデアはありますか?READMEの正しいポイントを見逃していますか?
どうもありがとうございました!
編集:いくつかの醜い回避策の時間:
search = User.search
search.first_name_like = value
search.last_name_like = value
User.find(:all, :conditions => search.scope(:find).gsub('AND','OR'))
動作しますが、確かに行く方法ではありませんね。