決裁月から今年度の月を割り出す

もっといい方法はあるだろうけど、作ったので載せておきました。
末日の判定等は今回必要なかったのでつけていません。
引数dayはdate,deadlineは月のintで

#決裁月から今年度を割り出す(返り値は[{"01"=>"2012"},{"02"=>"2012"}…])
def set_current_year(day=nil,deadline=nil)
  month = day.month
  year = day.year
  month_array = []
  if month <= deadline
    i = 0
    while i < month
      i += 1
      if i > 9
        month_array << {i.to_s => (year.to_i).to_s}
      else
        month_array << {"0" + i.to_s => (year.to_i).to_s}
      end
    end
    l = 1
    while month + l < 13
      if month + l > 9
        month_array << {(month + l).to_s => (year.to_i - 1).to_s}
      else
        month_array << {"0" + (month + l).to_s => (year.to_i - 1).to_s}
      end
      l += 1
    end
  elsif month > deadline
    i = 1
    while deadline + i <= month
      if deadline + i > 9
        month_array << {(deadline + i).to_s => (year.to_i).to_s}
      else
        month_array << {"0" + (deadline + i).to_s => (year.to_i).to_s}
      end
      i += 1
    end
  end
  return month_array
end

Hashでほしい場合は

#決裁月から今年度を割り出す(返り値は{20120101=>"2012-01-01",20120201=>"2012-02-01"…})
def set_array_in_hash_current_year_pattern_date(day=nil,deadline=nil)
  month = day.month
  year = day.year
  month_array = {}
  if month <= deadline
    i = 0
    while i < month
      i += 1
      if i > 9
        month_array[((year.to_i).to_s + i.to_s + "01").to_i] = (year.to_i).to_s + "-" + i.to_s + "-" + "01"
      else
        month_array[((year.to_i).to_s + "0" + i.to_s + "01").to_i] = (year.to_i).to_s + "-0" + i.to_s + "-" + "01"
      end
    end
    l = 1
    while month + l < 13
      if month + l > 9
        month_array[((year.to_i - 1).to_s + (month + l).to_s + "01").to_i] = (year.to_i - 1).to_s + "-" + (month + l).to_s + "-" + "01"
      else
        month_array[((year.to_i - 1).to_s + "0" +  (month + l).to_s + "01").to_i] = (year.to_i - 1).to_s + "-0" + (month + l).to_s + "-" + "01"
      end
      l += 1
    end
  elsif month > deadline
    i = 1
    while deadline + i <= month
      if deadline + i > 9
        month_array[((year.to_i).to_s + (deadline + i).to_s + "01").to_i] = (year.to_i).to_s + "-" + (deadline + i).to_s + "-" + "01"
      else
        month_array[((year.to_i).to_s + "0" + (deadline + i).to_s + "01").to_i] = (year.to_i).to_s + "-0" + (deadline + i).to_s + "-" + "01"
      end
      i += 1
    end
  end
  return month_array
end

スキーマ変更を行うメソッド

スキーマ変更を行うメソッド

#カラム追加
add_column(:table_name, :column_name, :type, options)
#カラムの名前を変更
rename_column(:table_name, :column_name, :new_column_name)
#カラムの属性を変更
change_column(:table_name, :column_name, :type, options)
#カラムのデフォルト値を変更
change_column_default(:table_name, :column_name, :default)
#カラムを削除
remove_column(:table_name, :column_name)
#検索用のインデックスを追加
add_index(:table_name, :column_name, options)
#テーブルを作成
create_table(:name, option)
#テーブルの名前を変更
rename_table(:old_name, :new_name)
#テーブルを削除
drop_table(:name)
引用元: Ruby on Rails : migration 機能リファレンス - WebOS Goodies.

Ruby 配列に要素を追加する

列を生成した後で要素を追加する場合は、Array#<<メソッド、Array#unshiftメソッド、Array#pushメソッドを使用します。

Array#<<メソッドは配列の最後に、Array#unshiftメソッドは配列の最初に要素を追加することができます。

a = [1,2,3,4,5] #=> [1,2,3,4,5]
a << 99 #=> [1,2,3,4,5,99]
a.unshift(99) #=> [99,1,2,3,4,5,99]

引用元: 逆引きRuby – 配列.