我想将YAML文件中的DateTime植入seed.rb中
这是来自seed.rb的代码
$user = User::where('nickname', 'like', '%' . strtolower($nickname) . '%')->first();
和帖子YAML文件中:
created_at: DateTime.new("#{post['created_at']}".to_i)
此输出为created_at: 2010-04-16
问题是:在YAML文件中应以哪种格式创建_at?
答案 0 :(得分:2)
DateTime.parse('2010-04-16')
#⇒ Fri, 16 Apr 2010 00:00:00 +0000
例如:
created_at: DateTime.parse(post['created_at'])
如果post['created_at']
已经是DateTime
的实例(例如,已加载YAML,则)按原样分配它:
created_at: post['created_at']
答案 1 :(得分:0)
当您选中"2010-04-16".to_i
时,您将得到2010。因此,您致电DateTime.new(2010)
并获得了看到的结果。
您不能使用字符串本身,DateTime.new("2010-04-16")
会导致类型错误。
但是Yaml在解析2010-04-16
时已经将其转换为日期,所以我想您可以使用post['created_at'].to_datetime
完整的原始红宝石示例:
require 'yaml'
require 'date'
post = YAML.load('created_at: 2010-04-16')
p post['created_at'] #-> #<Date: 2010-04-16 ((2455303j,0s,0n),+0s,2299161j)>
p post['created_at'].to_datetime #-> #<DateTime: 2010-04-16T00:00:00+00:00 ((2455303j,0s,0n),+0s,2299161j)>
您的seed.rb可能看起来像
created_at: post['created_at'].to_datetime