在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
使用最新的稳定Rails。
答案 0 :(得分:8)
在迁移中设置它:
t.integer :points, default: 0
答案 1 :(得分:0)
您可以按migration
或使用模型setter
方法设置默认值。
change_column :user, :points, :integer, :default => 0
或者,
def points
@points ||= 0
end