为了账号安全,请及时绑定邮箱和手机立即绑定

如何在ActiveRecord中设置默认值?

如何在ActiveRecord中设置默认值?

慕侠2389804 2019-10-04 14:24:10
如何在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)代码中,尽管不在模型中,但在迁移中。


查看完整回答
反对 回复 2019-10-04
  • 3 回答
  • 0 关注
  • 640 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信