我想遍历所有数据库表,并遍历数据库中的每条记录。我目前正在这样实现:
ActiveRecord::Base.connection.tables.each do |table|
table.classify.constantize.find_each do |record|
end
rescue NameError
end
问题在于它会像这样提取表:ar_internal_metadata
和schema_migrations
,但它们没有相应的模型,因此,我的table.classify.constantize
失败了,而其中的NameError
这就是为什么我在底部进行救援。
我不想挽救该错误。因此,有没有一种方法可以将表映射到适当的ActiveRecord :: Model?
答案 0 :(得分:1)
仅忽略所有不存在的模型就容易出错。相反,我建议只忽略您期望没有相应模型的表。
RAILS_META_TABLES = %w[ar_internal_metadata schema_migrations]
ActiveRecord::Base.connection.tables.each do |table|
next if RAILS_META_TABLES.include?(table)
table.classify.constantize.find_each do |record|
# ...
end
end