rails 3 以降

model を作ったときの default 値は
http://stackoverflow.com/questions/1550688/how-do-i-create-a-default-value-for-attributes-in-rails-activerecords-model
にもある通り


class MyModel < ActiveRecord::Base
after_initialize :default_values

private
def default_values
self.name ||= "default value"
end
end

で設定すると良いみたい。
※self.name がカラムで、default value が値。
before_create や before_save でも同様のことができるらしいが、after_initialize は DB に保存しないときにも使えるそうだ。
メモリ内にインスタンスが生成された後で発生する。

各種コールバックについては
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
を参照。

【送料無料】はじめてのRuby on Rails 3

【送料無料】はじめてのRuby on Rails 3
価格:2,415円(税込、送料別)

  • 2012/04/10

twitter でフォローいただいたんですが、migrate に書けばいいみたいです。
db/migrate/xxxx_create_mymodel.rb


class MyModel < ActiveRecord::Migration
def self.up
create_table "MyModel" do |t|
t.column "name", :string, :default => "default value"
end
end
end
※name がカラム名で、default_value が値
という感じ・・・
こっちの方が当たり前ですね。

レシピブック買いました・・・Rack の機能とか知らなかったことが沢山。
これね。

【送料無料】Rails3レシピブック190の技

【送料無料】Rails3レシピブック190の技
価格:3,129円(税込、送料別)

  • 2012/04/12

さらに 3.1 で migrate に書く方法としては up, down に書く方法もあるのですが、change に書くほうがいいやり方みたいです。


class MyModel < ActiveRecord::Migration
def change
add_column :my_models, :name, :string
end
end