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を引数に取ることも出来るので上手く組み合わせるとメタプログラミングが捗ります。より詳しくはリファレンスを参照して下さい(何か良い具体例を思いついたら追記します)。