在我的数据库中,有一些文本内容,其中之一是:
<% 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'。
答案 0 :(得分:1)
我们可以将'&lt;%'转义为: How do I escape ERB code in fixtures?
我现在正在做:在写入文件之前,我将所有'&lt;%'替换为'&lt; %%'。但它并不总是正常工作。如果内容有一些非英文字符,则内容将转储为“二进制”,而不是文本。然后在回读时,'&lt; %%'将不会转换为'&lt;%'。