如何在ActiveRecord中设置默认值?我从Pratik看到一篇帖子,描述了一个丑陋,复杂的代码块:http : //m.onkey.org/2007/7/24/how-to-set-default-values-in-your-modelclass Item < ActiveRecord::Base def initialize_with_defaults(attrs = nil, &block) initialize_without_defaults(attrs) do setter = lambda { |key, value| self.send("#{key.to_s}=", value) unless !attrs.nil? && attrs.keys.map(&:to_s).include?(key.to_s) } setter.call('scheduler_type', 'hotseat') yield self if block_given? end end alias_method_chain :initialize, :defaultsend我看过以下示例: def initialize super self.status = ACTIVE unless self.status end和 def after_initialize return unless new_record? self.status = ACTIVE end我也看到人们在迁移中使用了它,但是我宁愿看到它在模型代码中定义。有没有一种规范的方法可以为ActiveRecord模型中的字段设置默认值?
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
我们通过迁移(通过:default
在每个列定义上指定选项)将默认值放入数据库中,然后让Active Record使用这些值来设置每个属性的默认值。
恕我直言,这种方法符合AR的原则:约定优于配置,DRY,表定义驱动模型,而不是相反。
请注意,默认值仍在应用程序(Ruby)代码中,尽管不在模型中,但在迁移中。
- 3 回答
- 0 关注
- 688 浏览
添加回答
举报
0/150
提交
取消