【发布时间】:2012-12-19 05:04:30
【问题描述】:
我有一个简单的 YAML 数组,其值如下
%YAML 1.1
---
-
- 'd7744c3878'
- '80705686'
-
- 'c349b086b1'
- '80705686'
-
- '516e25d139'
- '95203563'
我尝试使用以下代码对其进行迭代并将它们添加到数据库中。
YAML.load_file("db/tokens.yml").each_value do |yml_token|
token = Token.find_or_create_by_token_origin(
token_origin: yml_token[0],
token_value: yml_token[1])
end
但我在尝试运行代码时收到NoMethodError: undefined method each_value for #<String:0x000000059ab7f8>
错误。
知道是什么原因造成的吗?
更新:
按照下面的建议使用Psych.load,我也会收到SyntaxError: db/gallery_tokens.yml:1: unknown type of %string
%YAML 1.1 错误。
require "psych"
Psych.load("db/tokens.yml").each do |yml_token|
token = Token.find_or_create_by_token_origin(
token_origin: yml_token[0],
token_value: yml_token[1])
end
【问题讨论】:
-
检查
YAML.load_file("db/tokens.yml")会得到什么? -
我得到了整个 YAML 数组。
-
each_value不存在于Arrays,这是用于Hashes。 -
@oldergod 我应该改用什么?
-
如果你要解析硬盘上的文件,你需要调用
Psych.load_file。
标签: ruby-on-rails ruby yaml