我整整都找到这样的宝石,但找不到好宝石。我想写一个,但我无法做到。
我的数据库中的数据可能是英文文本,将以纯文本形式转储到yml文件。有些是非英文文本,将是二进制类型。
他们俩都有这样的代码:
<% xxx %>
当我使用rake db:fixtures:load
将它们加载到数据库中时,可能会出现错误:method xxx not found
。
我不想找到一个好的宝石可以解决这个问题。感谢您的帮助
更新
我放弃了寻找这样的宝石。起初,我认为这是一项简单的任务,但现在,经过一些研究,我不得不说,它比我预期的要困难得多。
答案 0 :(得分:1)
呃...我不确定你是否真的需要宝石呢? Rails本身可以将任何模型转换为YAML。
假设您有一个名为“Objects”的模型。你可以点击一条看似如下的路线:
/objects.yaml
你会得到一个YAML形式的所有对象的巨大文本文件。
当然,你希望有类似的东西:
respond_to do |format|
format.yaml {render :yaml => @objects}
end
在你安静的控制器中。
如果您不想尝试执行此操作,则可以随时执行
@yaml = []
@objects.each do |object|
@yaml.push object.to_yaml
end
ruby中的任何位置,它将为您提供一系列yaml对象,然后您可以随意写入文件。
我想如果rails本身正在生成yaml,那么它以后能够将它作为一个夹具加载吗?
答案 1 :(得分:1)
你遇到问题的原因是因为Fixture加载器会在加载数据之前通过erb传递你的夹具。这意味着,如果您有&lt;%xxx%&gt;在您的yaml文件中,然后Rails会将其视为erb并尝试运行名为xxx的方法。
似乎没有一种简单的方法可以关闭灯具的erb处理。我尝试用CSV灯具替换灯具,这仍然可以进行ERB预处理。
如果没有一个简单的答案,我不得不问你的问题为什么你的文件中有这些字符串?
你想让它们被erb扩展吗?