如何在Rails 4模型中声明数组的关联?

问题描述 投票:0回答:1

我们想在用户模型中执行以下操作:

class User < ActiveRecord::Base
  model_names = ['Pets', 'Computers' ]
  model_names.each do |a|
    has_many #{a.to_sym}
  end 
end

上面的代码是否可以在Rails 4中运行?或者更好的方法呢?

ruby-on-rails ruby-on-rails-4
1个回答
1
投票

是的,你可以这样做,但rails希望这些名称是小写的,蛇形符号而不是类名。

你可以试试tableize

如果你需要它们成为类名,你需要做类似的事情:

 model_names.each do |a|
   has_many a.tableize.to_sym
 end 

虽然TBH我会走另一条路,例如:

class User < ActiveRecord::Base
  model_names = [:pets, :computers ]
  model_names.each do |a|
    has_many a
  end 
end

然后,如果您需要在其他地方使用model_names,请使用:model_names.map{|a| a.classify },可能使用constantize将其转换为真正的类。

© www.soinside.com 2019 - 2024. All rights reserved.