detectまたはfindは配列から一致する要素を捜索するメソッドです。
検索はtrueになったところで打ち切ってくれます。
(1..9).to_a.detect{|i| p i == 5} #>> false #>> false #>> false #>> false #>> true #=> 5
使い方を工夫すると、こんな事もできます
## rails / activesupport / lib / active_support / core_ext / date_and_time / calculations.rb def beginning_of_quarter first_quarter_month = [10, 7, 4, 1].detect { |m| m <= month } beginning_of_month.change(:month => first_quarter_month) end
実際調べてみると、こんな挙動です。
month = 3; [10,7,4,1].find{|m| p month >= m} #>> false #>> false #>> false #>> true #=> 1 month = 11; [10,7,4,1].find{|m| p month >= m} #>> true #=> 10