Seed_fu默认对象数据

时间:2014-08-19 19:41:47

标签: ruby-on-rails activerecord seeding

这是为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)
)

1 个答案:

答案 0 :(得分: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,并且,由于它并非所有记录都通用,因此您应该将其保留,以免混淆。

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