ActiveRecordで任意の条件に合致するcolumns一覧を得る
ActiveRecordで任意の条件に合致するtablesやcolumns一覧を得る方法
ApplicationRecord.descendantsで継承しているクラス全部だす
ActiveRecord::Base#attribute_typesからattributeの名前とtypeを得られる
継承ツリーが深くなったりすると重複するのでSetで重複排除する必要がある
以下はSymmetric Encryption gemを使って暗号化しているカラムの一覧を出力するsnippet
code:ruby
$ bin/rails c
Rails.application.eager_load!
r = Set.new
ApplicationRecord.descendants.each do |model|
model.attribute_types.select do |attr_name, attr_type|
if attr_type.class == SymmetricEncryption::ActiveRecord::EncryptedAttribute
r << "#{model.table_name}.#{attr_name}"
end
end
end
r.each {puts _1}