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 所有列的数组。您可以从数组中搜索您喜欢的任何列。
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 所有列的数组。您可以从数组中搜索您喜欢的任何列。