Module: RailsAdmin::Adapters::ActiveRecord

Defined in:
lib/rails_admin/adapters/active_record.rb,
lib/rails_admin/adapters/active_record/abstract_object.rb

Defined Under Namespace

Classes: AbstractObject, Association, StatementBuilder, WhereBuilder

Constant Summary collapse

DISABLED_COLUMN_TYPES =
[:tsvector, :blob, :binary, :spatial, :hstore, :geometry]
DISABLED_COLUMN_MATCHERS =
[/_array$/]

Instance Method Summary collapse

Instance Method Details

#adapter_supports_joins?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/rails_admin/adapters/active_record.rb', line 87

def adapter_supports_joins?
  true
end

#all(options = {}, scope = nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rails_admin/adapters/active_record.rb', line 28

def all(options = {}, scope = nil)
  scope ||= self.scoped
  scope = scope.includes(options[:include]) if options[:include]
  scope = scope.limit(options[:limit]) if options[:limit]
  scope = scope.where(primary_key => options[:bulk_ids]) if options[:bulk_ids]
  scope = query_scope(scope, options[:query]) if options[:query]
  scope = filter_scope(scope, options[:filters]) if options[:filters]
  if options[:page] && options[:per]
    scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per])
  end
  scope = scope.reorder("#{options[:sort]} #{options[:sort_reverse] ? 'asc' : 'desc'}") if options[:sort]
  scope
end

#associationsObject



50
51
52
53
54
# File 'lib/rails_admin/adapters/active_record.rb', line 50

def associations
  model.reflect_on_all_associations.map do |association|
    Association.new(association, model).to_options_hash
  end
end

#count(options = {}, scope = nil) ⇒ Object



42
43
44
# File 'lib/rails_admin/adapters/active_record.rb', line 42

def count(options = {}, scope = nil)
  all(options.merge({:limit => false, :page => false}), scope).count
end

#cyclic?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/rails_admin/adapters/active_record.rb', line 83

def cyclic?
  false
end

#destroy(objects) ⇒ Object



46
47
48
# File 'lib/rails_admin/adapters/active_record.rb', line 46

def destroy(objects)
  Array.wrap(objects).each &:destroy
end

#embedded?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/rails_admin/adapters/active_record.rb', line 79

def embedded?
  false
end

#encodingObject



75
76
77
# File 'lib/rails_admin/adapters/active_record.rb', line 75

def encoding
  Rails.configuration.database_configuration[Rails.env]['encoding']
end

#first(options = {}, scope = nil) ⇒ Object



24
25
26
# File 'lib/rails_admin/adapters/active_record.rb', line 24

def first(options = {}, scope = nil)
  all(options, scope).first
end

#get(id) ⇒ Object



14
15
16
17
18
# File 'lib/rails_admin/adapters/active_record.rb', line 14

def get(id)
  if object = model.where(primary_key => id).first
    AbstractObject.new object
  end
end

#new(params = {}) ⇒ Object



10
11
12
# File 'lib/rails_admin/adapters/active_record.rb', line 10

def new(params = {})
  AbstractObject.new(model.new(params))
end

#propertiesObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/rails_admin/adapters/active_record.rb', line 56

def properties
  columns = model.columns.reject do |c|
    c.type.blank? ||
      DISABLED_COLUMN_TYPES.include?(c.type.to_sym) ||
      DISABLED_COLUMN_MATCHERS.any? {|matcher| matcher.match(c.type.to_s)}
  end
  columns.map do |property|
    {
      :name => property.name.to_sym,
      :pretty_name => property.name.to_s.tr('_', ' ').capitalize,
      :length => property.limit,
      :nullable? => property.null,
      :serial? => property.primary,
    }.merge(type_lookup(property))
  end
end

#scopedObject



20
21
22
# File 'lib/rails_admin/adapters/active_record.rb', line 20

def scoped
  model.all
end