我将一些配方实例存储在CSV文件中,如下所示:
def add_recipe(recipe)
CSV.open(@filepath, 'ab', @csv_options) do |csv|
csv << [recipe, recipe.name, recipe.description, false]
end
end
recipe
是Recipe
级的强烈要求。
在文件中,我有这样的东西:
"#<Recipe:0x007fee9bbbab48>", "name1", "description1", "false"
"#<Recipe:0x007fee9bbbab49>", "name2", "description2", "false"
问题在于,当我想用row[0]
或带有row[2]
的布尔值检索存储在每一行中的对象时,我得到一个包含对象或布尔值的字符串。
如何获取具有Recipe或boolean但不是字符串的原始类的对象?
答案 0 :(得分:1)
你做不到。使用CSV是不可能的(除非您为CSV创建自己的序列化方法)。 .........................
答案 1 :(得分:1)
您在第一列中存储的内容是recipe.to_s
的结果,它只不过是具有类类型和对象ID编码的字符串。这与序列化对象不同。
您必须按照已经完成的方式编写食谱的每个属性,而不是将recipe
本身写入一行。
csv << [recipe.id, recipe.name, recipe.description, recipe.other_attribute]