2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

railsで動的に引数付きメソッドを定義する

Posted at

rubyには動的にメソッド名を定義するdefine_methodが用意されています。

これを上手く使う事で同じような処理をする同じような名前のメソッド、例えばget_{all_user|active_user|noactive_user|resign_user|}_reportみたいな定義をする場面でDRYに書けるので可読性、メンテナンス性の両面に有効です。


%w(all_user active_user noactive_user resign_user).each do |key|
  define_method("get_#{key}_report") do |term = "weekly"|
    User.get_report(key, term)
  end
end

更にdefine_methodの引数には定義されたメソッドの引数だけでなく、メソッド内で実行出来るProcを引数に取ることも出来るので上手く組み合わせるとメタプログラミングが捗ります。より詳しくはリファレンスを参照して下さい(何か良い具体例を思いついたら追記します)。

define_method (Module)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?