我想将一些对象保存到YAML文件中,然后在需要时加载它们并从中创建一些模型对象。这很容易和直接,因为加载文件并循环对象并在旅途中创建它们。
但我的问题是我需要一些实际上是方法调用的字段。例如:
users:
- name: sam
email: sam@example.com
status: status_label(1)
comment: first_occurrence.comment
- name: jane
email: jane@example.com
status: status_label(2)
comment: first_occurrence.comment
这些方法是类的方法我将加载YAML文件并开始创建用户对象。
在应用程序模型中:
data = YAML.load_file 'data.ml'
data['users'].each do |key, values|
User.create values
end
不会评估方法的会将它们保存为值,如何解决?
答案 0 :(得分:3)
更改YAML结构,以便区分值和方法调用。这样的事情会做:
users:
- attributes:
name: sam
email: sam@example.com
properties:
status: status_label(1)
comment: first_occurrence.comment
在课堂上使用:
data = YAML.load_file 'data.ml'
data['users'].each do |key, values|
u = User.new values['attributes']
values['properties'].each do |key, property|
u[key] = instance_eval(property)
u.save
end
end