2

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

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

我希望点从 0 而不是nil. 理想情况下,立即创建默认值,而不是等待将User其保存到数据库中。但我想使用 a before_saveor 数据库约束也可以:

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

  private
  def set_defaults
    self.points = 0
  end
end

使用最新的稳定 Rails。

4

2 回答 2

8

在您的迁移中设置它:

 t.integer :points, default: 0
于 2012-11-28T13:06:39.707 回答
0

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

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

或者,

def points
    @points ||= 0
end
于 2017-02-25T13:10:41.577 回答