通过 YAML 文件中的循环在 Rails 中动态生成灯具

Dynamically generate fixtures in Rails via loop in YAML file

我想避免大量的 boilerplate/copying 和粘贴,以及数据库模式由表、外键等构成的方式,我应该能够做这样的事情:

#simplified example
<% ["offense", "defense", "special_teams"].map do |position|%>

home_<%=position%>_player:
  game: 1
  team: buckeyes
  player: home_<%=position%>_player #uses fixture label for association
  division: northeast
  season: "2015"
  <%=position%>_stat: home_<%=position%>_stat #uses fixture label for association

away_<%=position%>_player:
  game: 1
  team: hokies
  player: away_<%=position%>_player
  division: southeast
  season: "2015"
  <%=position%>_stat: away_<%=position%>_stat
<% end %>

我试过在 IRB 会话中加载它,但无济于事。例外是

Psych::SyntaxError: (<unknown>): mapping values are not allowed in this context at line 5 column 26

这让我想知道我所做的是否是有效的 YAML。

事实证明,上述 YAML 是有效的,但它必须以不同于标准 YAML 文件的方式加载:

YAML::load(ERB.new(File.read(PATH_TO_FILE)).result)

我在“YAML with erb is not parsing”中发现了正确的加载逻辑,但想添加这个答案,因为我找不到任何使用 for 以外的循环机制的示例,并且内插到这个程度。