加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 模拟seeds.rb中的时间戳

发布时间:2020-12-17 02:31:18 所属栏目:百科 来源:网络整理
导读:我想通过示例数据填充数据库,出于某种原因,我还想模拟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
我想通过示例数据填充数据库,出于某种原因,我还想模拟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_save)中,created_at是Array:[date_value,1].所以我可以使用

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

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

解决方法

问题是这一行:

product.created_at = i.days.ago,

你需要摆脱尾随的逗号,这就是为什么你最终得到了created_at的数组.修复此问题,您可以摆脱before_save回调.

编辑:你得到的原因—在那里是因为你正在使用的ORM正在尝试序列化数组并且它将它变成YAML.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读