如何在ruby/rails中使用YAML?

Not*_*Dan 4 ruby ruby-on-rails

我有一个帐户列表,我想保存为YAML文件并将其加载到ruby中.像这样的东西:

Account1
  John Smith
  jsmith
  jsmith@gmail.com
Account2
  John Doe
  jdoe
  jdoe@hotmail.com
Run Code Online (Sandbox Code Playgroud)

然后我想获得名为"John Doe"的人的电子邮件地址(例如).

我该怎么做呢?

age*_*217 10

在这里,您将yaml对象保存为Person对象,然后在加载它们时,它们将加载到Person对象中,使它们更容易处理.

首先将你的yaml文件调整为这样的:

--- 
- !ruby/object:Person 
  name: John Doe
  sname: jdoe
  email: jdoe@gmail.com
- !ruby/object:Person 
  name: Jane Doe
  sname: jdoe
  email: jane@hotmail.com
Run Code Online (Sandbox Code Playgroud)

现在,您可以将yaml文件加载到Person对象数组中,然后操作数组:

FILENAME = 'data.yaml'

class Person 
 attr_accessor :name, :sname, :email
end

require "yaml"
# Will return an array of Person objects.
data = YAML::load(File.open(FILENAME))

# Will print out the first object in the array's name. #=> John Doe
puts data.first.name
Run Code Online (Sandbox Code Playgroud)