如何将数据库转储到内容为'<%abc do%> ddd<%end%>'的yaml文件中?

时间:2010-06-19 08:15:12

标签: ruby-on-rails yaml fixtures

在我的数据库中,有一些文本内容,其中之一是:

<% abc do %>
ddd
<% end %>

当我使用to_yaml()将其转储到yaml时,它就像:

content: |-
    <% abc do %>
    ddd
    <% end %>

然后,当我使用rake db:fixtures:load时,会发生这样的错误:

The exact error was: 
  NoMethodError: undefined method 'abc' for main:Object 

我检查了db:fixtures:load的来源,发现rails不会将内容视为纯文本,而是erb模板,因此它会尝试查找并执行'abc'方法。

我该如何解决这个问题?我认为不应该使用默认的'to_yaml'。

1 个答案:

答案 0 :(得分:1)

我们可以将'&lt;%'转义为: How do I escape ERB code in fixtures?

我现在正在做:在写入文件之前,我将所有'&lt;%'替换为'&lt; %%'。但它并不总是正常工作。如果内容有一些非英文字符,则内容将转储为“二进制”,而不是文本。然后在回读时,'&lt; %%'将不会转换为'&lt;%'。