Hash#sliceが欲しい をさらに拡張。
指定したキーを取り除いたHashを返すHash#except
を追加。
併せて、既存のHash#slice
はHash#only
に改名してみました。
hash_ext.r
1 class Hash 2 def only(*args) 3 args = *args if args[0].is_a? Array 4 args.inject({}){|hash, key| hash[key] = self[key]; hash} 5 end 6 7 def except(*args) 8 args = *args if args[0].is_a? Array 9 args.inject(dup){|hash, key| hash.delete(key); hash} 10 end 11 end
使い方:
1 cond = params.only :year, :month, :day 2 ma = MonthlyArchive.find :all, :conditions => cond.except(:day)
posted by
genki
on Thu 29 Nov 2007
at 03:08