我可以说5个模型。如何通过多个模型循环
Thread
Poll
Message
Wall
Zone
我想的东西,我可以通过将包含字符串或数组中的每个模型回路,如果该模式有一个USER_ID领域,它更新到任何我想将其设置为。
你如何能做到像
[Thread.where(:user_id => XXX)].each do |model|
...
end
当线程是通过模型列表循环任何想法[“主题”,“民意调查”,...]
感谢
我可以说5个模型。如何通过多个模型循环
Thread
Poll
Message
Wall
Zone
我想的东西,我可以通过将包含字符串或数组中的每个模型回路,如果该模式有一个USER_ID领域,它更新到任何我想将其设置为。
你如何能做到像
[Thread.where(:user_id => XXX)].each do |model|
...
end
当线程是通过模型列表循环任何想法[“主题”,“民意调查”,...]
感谢
试试这个:
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
这里是一个可能的解决方案:
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
但是这会更新整个数据库。你确定你要这么做吗?
[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
这并不检查'user_id'是否存在(asker预期的),这可能导致崩溃.. – apneadiving
yap。抱歉。我读了一半的问题,并开始输入.. –