在RoR 3.1中,“验证”仍无法在模型中设置默认值。还是有吗?如果没有,设置默认值的最佳方法是什么?
答案 0 :(得分:7)
一种方法是在迁移中设置默认值。这将是一个将设置到您的数据库的属性。您可以在此处阅读更多内容:http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
另一种方法是设置一个前置过滤器,比如before_save或before_create,然后检查属性上的值是否为nil,你可以将它设置为某个值。
class Abc
before_save :set_default
protected
def set_default
self.xyz = "default" unless self.xyz
end
end
答案 1 :(得分:7)
迁移最适合设置默认值
编写迁移到更新列并设置默认值
self.up do
update_column :table_name,:column_name,:default=>your default value
end
答案 2 :(得分:5)
这对我很有用
class WorkLogEntry < ActiveRecord::Base
after_initialize do
self.work_done_on ||= Date.today
end
...
end
答案 3 :(得分:0)
当模型获得带有空文件的表单参数时,该字段的参数将具有nil参数。因此,如果您初始化相同的@ foo ='bar'并且用户发送带有空params [:foo]的表单,则Model.create(params [:model])将具有foo =&gt;为零。
您可以通过迁移在数据库结构中设置默认参数:
create_table:评论做| t |
t.text:comment,:default =&gt; “酒吧”
端