今回はRailsでよく使用する%記法(パーセント記法)についてまとめたので紹介したいと思います。%記法を使用すると記述量を減らすことができるため、使用できる箇所では積極的に用いることをおすすめします。
%記法まとめ
%i(小文字)
%i(小文字)は要素がシンボルの配列を書くことができる記法になります。
%i[apple banana kiwi peach orange]
=> [:apple, :banana, :kiwi, :peach, :orange]
ストロングパラメータを記述する際などに使えそうです。
# %iを使用しない場合
params.permit(:apple, :banana, :kiwi, :peach, :orange)
# %iを使用した場合
params.permit(%i[apple banana kiwi peach orange])
%I(大文字)
%i(小文字)と同じくシンボルの配列を作成しますが、%I(大文字)はそれに加えて式展開を行うという特徴を持ちます。
red_fruits = "apple"
%I[#{red_fruits} banana kiwi peach orange]
=> [:apple, :banana, :kiwi, :peach, :orange]
%i(小文字)との違いを見比べると以下のようになります。
# %i(小文字)の場合
red_fruits = "apple"
%i[#{red_fruits} banana kiwi peach orange]
=> [:"#{red_fruits}", :banana, :kiwi, :peach, :orange]
# %I(大文字)の場合
red_fruits = "apple"
%I[#{red_fruits} banana kiwi peach orange]
=> [:apple, :banana, :kiwi, :peach, :orange]
%w(小文字)
%w(小文字)は要素が文字列の配列を書くことができる記法になります。
%w[apple banana kiwi peach orange]
=> ["apple", "banana", "kiwi", "peach", "orange"]
色々な使い方がありますが、where
で複数検索をかける際などに使えそうです。
# %wを使用しない場合
Fruit.where(color: ["yellow", "green", "blue"])
# %wを使用した場合
Fruit.where(color: %w[yellow green blue])
%W(大文字)
%w(小文字)と同じく文字列の配列を作成しますが、%W(大文字)はそれに加えて式展開を行うという特徴を持ちます。
red_fruits = "apple"
%W[#{red_fruits} banana kiwi peach orange]
=> ["apple", "banana", "kiwi", "peach", "orange"]
%w(小文字)との違いを見比べると以下のようになります。
# %w(小文字)の場合
red_fruits = "apple"
%w[#{red_fruits} banana kiwi peach orange]
=> ["#{red_fruits}", "banana", "kiwi", "peach", "orange"]
# %W(大文字)の場合
red_fruits = "apple"
%W[#{red_fruits} banana kiwi peach orange]
=> ["apple", "banana", "kiwi", "peach", "orange"]
%q(小文字)
%q(小文字)は対象をシングルクォートで囲んでくれる記法になります。
fruits = %q(apple banana kiwi peach orange)
puts fruits
=> apple banana kiwi peach orange
シングルクォートで囲っているため式展開は行われません。
red_fruits = "apple"
fruits = %q("#{red_fruits}" banana kiwi peach orange)
puts fruits
=> "#{red_fruits}" banana kiwi peach orange
%Q(大文字)
%Q(大文字)は対象をダブルクォートで囲んでくれる記法になります。
fruits = %Q(apple banana kiwi peach orange)
puts fruits
=> apple banana kiwi peach orange
%で記述しても同等の結果が得られます。
fruits = %(apple banana kiwi peach orange)
puts fruits
=> apple banana kiwi peach orange
ダブルクォートで囲っているため、%q(小文字)と違い式展開が行われます。
# %q(小文字)の場合
red_fruits = "apple"
fruits = %q("#{red_fruits}" banana kiwi peach orange)
puts fruits
=> "#{red_fruits}" banana kiwi peach orange
# %Q(大文字)の場合
red_fruits = "apple"
fruits = %Q("#{red_fruits}" banana kiwi peach orange)
puts fruits
=> "apple" banana kiwi peach orange
%s
%sは対象をシンボルとして生成してくれる記法になります。
%s(RubyonRails)
=> :RubyonRails
%s(テスト)
=> :テスト
%x
%xは出力コマンドを実行してくれる記法になります。
# railsのバージョン確認
%x(rails -v)
=> "Rails 6.1.4.1"
# 明日の日時を表示
%x(date -d tomorrow)
=> "Fri Dec 10 00:37:43 JST 2021"
%r
%rは正規表現リテラルである/
を省略できる記法です。
%r(test)
=> /test/
%r(test test)
=> /test test/
URLの正規表現を記述する際に使えそうです。
# %rを使用しない場合
/https:\/\/techtechmedia.com\//
# %rを使用した場合
%r(https://techtechmedia.com/)
参考
今回はRailsでよく使用する%記法(パーセント記法)について紹介しました。記述量を減らすことができるため、%記法を導入できそうな箇所ではぜひ使ってみてください。