Rails中模型属性的默认值

时间:2012-11-28 13:04:09

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2 activemodel

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

class User < ActiveRecord::Base
  attr_accessible :name, :points
end

我希望积分从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

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

2 个答案:

答案 0 :(得分:8)

在迁移中设置它:

 t.integer :points, default: 0

答案 1 :(得分:0)

您可以按migration或使用模型setter方法设置默认值。

change_column :user, :points, :integer, :default => 0

或者,

def points
    @points ||= 0
end