Rails中模型属性的默认值

at.*_*at. 1 activerecord ruby-on-rails activemodel ruby-on-rails-3 ruby-on-rails-3.2

在Rails中为模型设置默认值的正确方法是什么?

class User < ActiveRecord::Base
  attr_accessible :name, :points
end
Run Code Online (Sandbox Code Playgroud)

我希望积分从0开始而不是nil.理想情况下,默认值是立即创建的,而不是等待User保存到数据库中.但我想使用before_save或数据库约束也可以工作:

class User < ActiveRecord::Base
  attr_accessible :name, :points
  before_save :set_defaults

  private
  def set_defaults
    self.points = 0
  end
end
Run Code Online (Sandbox Code Playgroud)

使用最新的稳定Rai​​ls.

m_x*_*m_x 8

在迁移中设置它:

 t.integer :points, default: 0
Run Code Online (Sandbox Code Playgroud)