6

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'))

動作しますが、確かに行く方法ではありませんね。

4

1 に答える 1

2

別の方法はないと思います。デフォルトでは、引数をANDで結合します。

ORコードは、チェーンでのみ機能するようです。

于 2009-11-04T15:18:52.793 に答える