Ransackで複雑なSQLを実装する方法

こんばんは、@ij_spitzです。
最近はRailsAjaxを使って、チャット的なものを作っています。

Railsでは主にActiveRecordというDBへのアクセス方法があり、
直感的な方法でDBを操作できます。

しかしながら、ActiveRecordにも欠点が多々あります。
例えば、whereで繋げていけばAND検索はできるものの、
OR検索ができないことなどが挙げられます。

こういったActiveRecordで検索できないものでも、
Ransackを使えば簡単に検索できるようになります。
導入方法は簡単で、Gemfile に追加して bundle install するだけです。

基本的な使い方は、下のようになっています。

モデル名.search(条件).result


searchの条件などは下のURLが詳しいです。
http://qiita.com/nysalor/items/9a95d91f2b97a08b96b0


上のサイトにはソートの方法が載っていなかったので、
最後にその方法だけ紹介しようと思います。

m = Member.search(:name_cont_any => ['mecab', 'chasen'])
m.sorts = 'id asc'
@members = m.result


ActiveRecordと似たような形で書いていけるので、
違和感なく導入できました。
SQLをかなりスッキリ書けるのでぜひ使ってみてください!