这是为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)
)
答案 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
,并且,由于它并非所有记录都通用,因此您应该将其保留,以免混淆。
否则,是的。这就是我多年来一直在做这类事情的方式,对这种方法非常满意。