Hop*_*eam 4 ruby-on-rails ruby-on-rails-3
在RoR 3.1中,"validates"仍无法在模型中设置默认值.还是有吗?如果没有,设置默认值的最佳方法是什么?
一种方法是在迁移中设置默认值.这将是一个将设置到您的数据库的属性.您可以在这里阅读更多内容:http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
另一种方法是设置一个before过滤器,比如before_save或before_create,然后检查属性上的值是否为nil,你可以将它设置为某个值.
class Abc
before_save :set_default
protected
def set_default
self.xyz = "default" unless self.xyz
end
end
Run Code Online (Sandbox Code Playgroud)
迁移最适合设置默认值
写入迁移到更新列并设置默认值
self.up do
update_column :table_name,:column_name,:default=>your default value
end
Run Code Online (Sandbox Code Playgroud)
这对我很有用
class WorkLogEntry < ActiveRecord::Base
after_initialize do
self.work_done_on ||= Date.today
end
...
end
Run Code Online (Sandbox Code Playgroud)