如何在模型中设置默认值? – 在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。
- 您可以在创建对象之前检查所有参数
-
您可以通过迁移在数据库结构中设置默认参数:
create_table:comments do | t |
t.text:comment,:default =>’bar’
结束