【问题标题】:Default values for model attributes in RailsRails 中模型属性的默认值
【发布时间】:2012-11-28 13:04:09
【问题描述】:

在 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。

【问题讨论】:

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


【解决方案1】:

在您的迁移中设置它:

 t.integer :points, default: 0

【讨论】:

    【解决方案2】:

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

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

    或者,

    def points
        @points ||= 0
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多