例えば、Railsのviewでタブ的なものを書いていて、選択されているタブを表現するのに
/ hoge.html.slim
= render 'tab', current: 'hoge'
/ _tab.html.slim
li class=('active' if current == 'hoge') hoge
li class=('active' if current == 'huga') huga
と書くより、
/ hoge.html.slim
= render 'tab', current: 'hoge'
/ _tab.html.slim
current = current.inquiry
li class=('active' if current.hoge?) hoge
li class=('active' if current.huga?) huga
って書くほうがメッセージっぽくて良さそうな気がする。
実装はこんな感じで、method_missing
で処理してるので速度気にしてるとアレかもしれない。
def method_missing(method_name, *arguments)
if method_name[-1] == '?'
self == method_name[0..-2]
else
super
end
end
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/string_inquirer.rb