模拟seeds.rb中的时间戳

时间:2012-03-10 17:27:10

标签: ruby-on-rails ruby sqlite

我想通过示例数据填充数据库,出于某种原因,我还想模拟created_at。 这是我的种子.rb:

9.downto(1) do |i|
  product = Product.new(price: 99.99)
  product.created_at = i.days.ago,
  product.save!
end

在数据库中,rake db:seed的结果如下,

---- 2012-03-03 16:50:30.316886000 Z- 1

当我需要时

2012-03-03 16:50:30.316886000 Z- 1

如何避免结果中的这些----符号?

(db:sqlite3)

更新: 我发现当我使用product.created_at = i.days.ago时, 在回调中(before_savecreated_atArray[date_value, 1]。所以我可以使用

before_save { self.created_at = self.created_at[0] }

然后,数据库中的值将是正确的(没有----),但使用回调似乎不是一个好方法。

1 个答案:

答案 0 :(得分:4)

问题在于这一行:

product.created_at = i.days.ago,

你需要摆脱尾随的逗号,这就是为什么你最终得到created_at的数组。解决这个问题,您可以摆脱before_save回调。

编辑:你得到---的原因是因为你正在使用的任何ORM都在尝试序列化数组并将其转换为YAML。