【问题标题】:Seeding objects with datetime Rails使用日期时间 Rails 播种对象
【发布时间】:2016-05-23 07:57:50
【问题描述】:

我正在尝试将多个文件播种到我的 rails 应用程序以测试页面结构,其中一个属性是日期时间戳。但是,我不知道如何播种这个字段。我尝试过 created_at,但无法识别。不幸的是,我在 ruby​​ 文档或 railscast 中找不到示例。

知道怎么做吗?谢谢

12.times { Post.create(title: 'pellentesque', body: 'Lorem ut vehicula', postnumber: '1', date: created_at, image_url: 'https://upload.wikimedia.org/wikipedia/commons/1/19/John_Calvin_-_Young.jpg') }

【问题讨论】:

  • 日期时间列类型的字段名称是什么?例如,如果您想覆盖 created_at 字段,您可以执行 Post.create(title: "foobar", created_at: Time.now - 1.days)
  • 您遇到错误了吗? created_at 和 updated_at 由活动记录自动设置,无需手动设置。如果要设置此字段,可以尝试使用 this answer 包装它。如果您尝试设置自定义字段,则可以使用 code field_name: Time.current code 进行设置。如果这没有帮助,我建议发布您的架构,如果您收到一个错误,则建议发布。
  • @23tux 字段名称只是“日期”,我将日期时间指定为字段,如果通过表单添加帖子,则该字段有效,但不能通过播种。您认为我可以删除该列并迁移到 created_at: Time.now 列吗? Datise 我只是得到一个语法错误,一旦我删除 date 属性就消失了,所以我想我只是没有得到什么语法来字段日期时间。
  • 不,不要删除created_at 字段。当您执行问题中的行时,您的确切错误是什么?
  • NameError: main:Object 的未定义局部变量或方法 `created_at'

标签: ruby-on-rails ruby datetime


【解决方案1】:

传递给日期的变量:需要是日期或时间对象:

some_date = 4.days.ago

12.times do 
  Post.create(
    title: 'pellentesque', 
    body: 'Lorem ut vehicula', 
    postnumber: '1', 
    date: some_date, # some_date passed to date attribute
    image_url: 'https://upload.wikimedia.org/wikipedia/commons/1/19/John_Calvin_-_Young.jpg'
  ) 
end

【讨论】:

  • 谢谢,效果很好!留给未来的答案寻求者参考:api.rubyonrails.org/classes/DateTime.html 显示示例代码的源代码。我使用 'date: Time.zone.now.to_datetime' 来显示当前时间。
【解决方案2】:

如果数据库字段是时间戳,您就不必手动设置它。它会在您创建新行时设置。

如果你想手动设置它,你必须像这样创建一个时间戳:Time.strptime('06/30/2012 00:00', '%m/%d/%Y %H:%M')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2011-07-14
    • 2017-04-25
    • 2021-08-24
    相关资源
    最近更新 更多