我可以说5个型号。
Thread
Poll
Message
Wall
Zone
我想在某些地方循环浏览字符串或数组中包含的每个模型,如果该模型有user_id字段,请将其更新为我想要设置的内容。
关于如何做某事的任何想法
[Thread.where(:user_id => XXX)].each do |model|
...
end
Thread在模型列表中循环[“Thread”,“Poll”,....]
由于
答案 0 :(得分:4)
试试这个:
models = ["Thread", "Poll", ....]
models.each do |model|
model = model.constantize
if model.columns.map(&:name).include?("user_id")
model.where(:user_id => my_user_id).each do |m|
do_stuff_with(m)
end
end
end
答案 1 :(得分:2)
这是一个可能的解决方案:
user_id = 1
[Thread, Poll, Message, Wall].each do |kind|
if kind.columns.find {|column| column.name == 'user_id'}
kind.update_all( :user_id => user_id )
end
end
但这会更新整个数据库。你确定要这么做吗?
答案 2 :(得分:2)
[Thread, Poll, ...].each do |klass|
if klass.columns.map(&:name).include? "user_id"
klass.where(:user_id => user_id).all.each do |instance|
#do what you need here
end
end
end