如何在模型中设置默认值? – 在Ruby on Rails 3.1中

在RoR 3.1中,“validates”仍无法在模型中设置默认值。 或者有吗? 如果没有,设置默认值的最佳方法是什么?

一种方法是在迁移中设置默认值。 这将是一个将设置到您的数据库的属性。 您可以在这里阅读更多内容: http : //api.rubyonrails.org/classes/ActiveRecord/Migration.html

另一种方法是设置一个beforefilter,比如before_save或before_create,然后检查属性上的值是否为nil,你可以将它设置为某个值。

class Abc before_save :set_default protected def set_default self.xyz = "default" unless self.xyz end end 

迁移最适合设置默认值
编写迁移到更新列并设置默认值

  self.up do update_column :table_name,:column_name,:default=>your default value end 

这对我很有用

 class WorkLogEntry < ActiveRecord::Base after_initialize do self.work_done_on ||= Date.today end ... end 

当模型获得带有空文件的表单参数时,该字段的参数将具有nil参数。 因此,如果您初始化相同的@ foo =’bar’并且用户发送带有空params [:foo]的表单,那么Model.create(params [:model])将具有foo => nil。

  1. 您可以在创建对象之前检查所有参数
  2. 您可以通过迁移在数据库结构中设置默认参数:

    create_table:comments do | t |
    t.text:comment,:default =>’bar’
    结束