酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Everywhere ARのnotやlikeクエリーの可読性を上げるgem

ActiveRecordでnotやlikeの構文の可読性を上げてくれるgem『everywhere』の紹介です。

RubyKaigi 2013のamatsudaさんの発表スライドの中にこのgemの一部の機能がRails4に採用された際の話がありました。こちらのスライド『Ruby on Your Rails // Speaker Deck』もRailsのポリシーを垣間見ることができて面白いですよ〜^^


Gemのインストール

Gemfileに以下を追加して、コンソールでbundleを実行してください。

1
2
# ARのサポート
gem 'everywhere'

使い方

使い方はいずれも至ってシンプルです。

notメソッド:

1
2
Product.where.not(:maker => 'foo')
=> SELECT "products".* FROM "products" WHERE ("products"."maker" != 'foo')

likeメソッド:

1
2
Product.where.like(:maker => 'huga%').first
=> Product Load (0.4ms)  SELECT `products`.* FROM `products` WHERE (`products`.`maker` LIKE 'huga%') LIMIT 1

not_likeメソッド:

1
2
Product.where.like(:maker => 'hoge%').first
=> SELECT `products`.* FROM `products` WHERE (`products`.`maker` NOT LIKE 'hoge%') LIMIT 1

このなかでnotメソッドはRails4に取り込まれています!

ちなみに、同じ意味でこういった構文でも書けるようになっています。

1
2
3
4
Product.where(:maker => {:not => 'foo'})
Product.where(:not => {:maker => 'foo'})
Product.where(:not, :maker => 'foo')
Product.where_not(:maker => 'foo')

これならlikenot構文の可読性を向上させることができそうですね!

公式サイト

GitHubはこちらです。

amatsuda/everywhere · GitHub

おすすめの書籍