Rails 从整个数据库中搜索列名的方法

Rails way to search column names from whole database

Rails有没有方便的方法从整个数据库中搜索特定的列名?

我已经看到一些 post 在 SQL 语法中是如何实现的,但在 Rails 中显示了 none。 我正在使用 Rails4 和 MySQL2 gem.

编辑: 更准确地说,简单的场景:我想知道数据库中是否存在列名。我猜某事就像对所有表进行迭代并检查列名是否存在。

我想你正在寻找类似

的东西
Rails.application.eager_load! # if cache_classes is off (in dev mode is off by default)
ActiveRecord::Base.descendants.map{|t| t.column_names.map{|cn| t.to_s + ' - ' + cn} rescue []}.flatten.select{|el| el[/search_term/]}

不是最好的解决方案,但对我有用

models = ActiveRecord::Base.connection.tables.collect{|t| t.underscore.singularize.camelize.constantize rescue nil}

然后

columns = models.collect{|m| m.column_names rescue nil}

这一行 returns 所有列的数组。您可以从数组中搜索您喜欢的任何列。