Ransackで複雑なSQLを実装する方法
こんばんは、@ij_spitzです。
最近はRailsでAjaxを使って、チャット的なものを作っています。
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をかなりスッキリ書けるのでぜひ使ってみてください!