Sha256: 51376d9fd9e44a928f6a0716bc3a38edf803489aa7c5e05044faadbe8868192f

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module RademadeAdmin
  module Model
    module DataAdapter
      class ActiveRecord
        include RademadeAdmin::Model::DataAdapter

        def relations
          @model.reflections
        end

        def reflect_on_association(name)
          @model.reflect_on_association(name)
        end

        def association_foreign_key(relation)
          assoc_key = relation.association_foreign_key
          if relation.collection?
            assoc_key += 's'
          end
          assoc_key
        end

        def fields
          @model.column_types
        end

        def has_field?(field)
          fields.include? field
        end

        def foreign_key?(field)
          if field.is_a? ::ActiveRecord::AttributeMethods::TimeZoneConversion::Type # why another behaviour?
            field_name = field.instance_values['column'].name
          else
            field_name = field.name
          end
          field_name[-3, 3] == '_id'
        end

        protected

        def has_many_relations
          [:has_many, :has_and_belongs_to_many]
        end

        def has_one_relations
          [:has_one, :belongs_to]
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rademade_admin-0.0.1 lib/rademade_admin/model/data_adapter/active_record.rb