【问题标题】:Seed_fu default object dataSeed_fu 默认对象数据
【发布时间】:2014-08-19 19:41:46
【问题描述】:

这是为 seed_fu 数据创建默认选项的最佳方式吗?

# /db/fixtures/development/accounts.rb
default_opts = { id: 1, employees: true, time_zone_id: 6, credit: true }

Account.seed(:id,
  default_opts.clone.merge!(id: 1),
  default_opts.clone.merge!(id: 2)
)

【问题讨论】:

    标签: ruby-on-rails activerecord seeding


    【解决方案1】:

    你在正确的轨道上。不过你可以简化一点:

    defaults = { employees: true, time_zone_id: 6, credit: true }
    
    Account.seed(:id,
      defaults.update(id: 1, something_else: "asdf"),
      defaults.update(id: 2, something_else: "qwer")
    )
    

    基本上,如果您不使用merge!(它会覆盖原始散列),那么您不需要首先使用clone 散列。另外,我使用update 而不是merge,因为我觉得这是新的Rails 约定......因为ActiveRecord::Persistence#updates_attributes 已重命名为ActiveRecord::Persistence#update,例如。而且因为,IMO,Hash#update 使选项合并的方式(左或右)更加明显。最后,不需要在默认哈希中定义id: 1,而且由于它并非对所有记录都通用,因此您应该将其省略以免混淆。

    否则,是的。这就是我多年来一直在做这类事情的方式,并且对这种方法非常满意。

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 2014-08-18
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      相关资源
      最近更新 更多