我们想在用户模型中执行以下操作:
class User < ActiveRecord::Base
model_names = ['Pets', 'Computers' ]
model_names.each do |a|
has_many #{a.to_sym}
end
end
上面的代码是否可以在Rails 4中运行?或者更好的方法呢?
是的,你可以这样做,但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
将其转换为真正的类。