Rails: user.r.new 当 r 是迭代器时

Rails: user.r.new when r is an iterator

如果我有一个 类 的数组,如下所示:

def resources
  [Brand, Chart, Component, Cover, Expression, Introduction, Mode, Preference, Price, Template, User, UserNote]
end

如何在具有 parent 关联的循环中构建每一个,即:

resources.each do |r|
  current_user.r.new
end

不确定如何将 r 转换为 child。谢谢!

如果所有关联都定义为has_many,您可以将模型表化并使用这样的发送方法。

resources.each do |r|
  current_user.send(r.to_s.tableize).new
end

如果包含任何 belongs_to 关联,最好在资源方法中使用关联名称数组而不是 类。

def resources
  %w(brands charts component ....)
end

resources.each do |r|
  current_user.send(r).new
end