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

时间:2015-08-06 12:35:12

标签: mysql sql ruby-on-rails ruby-on-rails-4 mysql2

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

我已经看过一些关于如何在SQL语法中实现但没有在Rails中显示的帖子。 我正在使用Rails4和MySQL2 gem。

编辑:更确切地说,简单方案:我想知道数据库中是否存在列名。我想这就像对所有表的迭代,并检查列名是否存在。

2 个答案:

答案 0 :(得分:1)

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

然后

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

此行返回所有列的数组。您可以从数组中搜索您喜欢的列。

答案 1 :(得分:0)

我认为你正在寻找像

这样的东西
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/]}

不是最好的解决方案,但它适用于我