Sha256: 8abe31da863c68ce979e24fbd4fe97f8e61b74787b09ca2adcdc157fbcb54975
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
class ActiveRecordSchemaScrapper class Attributes class << self def register_type(name:, klass:) registered_types << [name, klass] end def registered_types @registered_types ||= [] end def register_default(name:, klass:) registered_defaults << [name, klass] end def registered_defaults @registered_defaults ||= [] end end attr_reader :errors, :model private :model def initialize(model:) @model = model @errors = [] end include Enumerable def each call.each { |attr| yield(attr) } end def to_a @to_a ||= map { |v| v } end private def call @attributes ||= model.columns_hash.map do |k, v| ActiveRecordSchemaScrapper::Attribute.new( name: k, type: v.type, precision: v.cast_type.precision, limit: v.cast_type.limit, scale: v.cast_type.scale, default: v.default, null: v.null, ) end rescue NoMethodError => e @errors << OpenStruct.new(class_name: model.name, message: "#{model.name} is not a valid ActiveRecord model.", original_error: e, level: :error) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_record_schema_scrapper-0.2.0 | lib/active_record_schema_scrapper/attributes.rb |