Module: Ransack::Adapters::Mongoid::Base::ClassMethods

Defined in:
lib/ransack/adapters/mongoid/base.rb

Instance Method Summary collapse

Instance Method Details

#_ransack_aliasesObject



36
37
38
# File 'lib/ransack/adapters/mongoid/base.rb', line 36

def _ransack_aliases
  @_ransack_aliases ||= {}
end

#_ransack_aliases=(value) ⇒ Object



40
41
42
# File 'lib/ransack/adapters/mongoid/base.rb', line 40

def _ransack_aliases=(value)
  @_ransack_aliases = value
end

#_ransackersObject



44
45
46
# File 'lib/ransack/adapters/mongoid/base.rb', line 44

def _ransackers
  @_ransackers ||= {}
end

#_ransackers=(value) ⇒ Object



48
49
50
# File 'lib/ransack/adapters/mongoid/base.rb', line 48

def _ransackers=(value)
  @_ransackers = value
end

#all_ransackable_attributesObject



69
70
71
72
# File 'lib/ransack/adapters/mongoid/base.rb', line 69

def all_ransackable_attributes
  ['id'] + column_names.select { |c| c != '_id' } + _ransackers.keys +
    _ransack_aliases.keys
end

#column_namesObject



125
126
127
# File 'lib/ransack/adapters/mongoid/base.rb', line 125

def column_names
  @column_names ||= fields.map(&:first)
end

#columnsObject

def group_by *args, &block

criteria

end



121
122
123
# File 'lib/ransack/adapters/mongoid/base.rb', line 121

def columns
  @columns ||= fields.map(&:second).map{ |c| ColumnWrapper.new(c) }
end

#columns_hashObject



129
130
131
# File 'lib/ransack/adapters/mongoid/base.rb', line 129

def columns_hash
  columns.index_by(&:name)
end

#custom_join_ast(*args) ⇒ Object



105
106
107
# File 'lib/ransack/adapters/mongoid/base.rb', line 105

def custom_join_ast *args
  []
end

#first(*args) ⇒ Object



109
110
111
112
113
114
115
# File 'lib/ransack/adapters/mongoid/base.rb', line 109

def first(*args)
  if args.size == 0
    super
  else
    self.criteria.limit(args.first)
  end
end

#joins_values(*args) ⇒ Object

imitating active record



101
102
103
# File 'lib/ransack/adapters/mongoid/base.rb', line 101

def joins_values *args
  []
end

#ransack(params = {}, options = {}) ⇒ Object Also known as: search



52
53
54
55
56
# File 'lib/ransack/adapters/mongoid/base.rb', line 52

def ransack(params = {}, options = {})
  params = params.presence || {}
  Search.new(self, params ? params.delete_if {
    |k, v| v.blank? && v != false } : params, options)
end

#ransack_alias(new_name, old_name) ⇒ Object



60
61
62
# File 'lib/ransack/adapters/mongoid/base.rb', line 60

def ransack_alias(new_name, old_name)
  self._ransack_aliases.store(new_name.to_s, old_name.to_s)
end

#ransackable_associations(auth_object = nil) ⇒ Object



84
85
86
# File 'lib/ransack/adapters/mongoid/base.rb', line 84

def ransackable_associations(auth_object = nil)
  reflect_on_all_associations_all.map { |a| a.name.to_s }
end

#ransackable_attributes(auth_object = nil) ⇒ Object



74
75
76
# File 'lib/ransack/adapters/mongoid/base.rb', line 74

def ransackable_attributes(auth_object = nil)
  all_ransackable_attributes
end

#ransackable_scopes(auth_object = nil) ⇒ Object

For overriding with a whitelist of symbols



95
96
97
# File 'lib/ransack/adapters/mongoid/base.rb', line 95

def ransackable_scopes(auth_object = nil)
  []
end

#ransacker(name, opts = {}, &block) ⇒ Object



64
65
66
67
# File 'lib/ransack/adapters/mongoid/base.rb', line 64

def ransacker(name, opts = {}, &block)
  self._ransackers = _ransackers.merge name.to_s => Ransacker
    .new(self, name, opts, &block)
end

#ransortable_attributes(auth_object = nil) ⇒ Object



78
79
80
81
82
# File 'lib/ransack/adapters/mongoid/base.rb', line 78

def ransortable_attributes(auth_object = nil)
  # Here so users can overwrite the attributes
  # that show up in the sort_select
  ransackable_attributes(auth_object)
end

#reflect_on_all_associations_allObject



88
89
90
91
92
# File 'lib/ransack/adapters/mongoid/base.rb', line 88

def reflect_on_all_associations_all
  reflect_on_all_associations(
    :belongs_to, :has_one, :has_many, :embeds_many, :embedded_in
    )
end

#tableObject



133
134
135
136
137
138
# File 'lib/ransack/adapters/mongoid/base.rb', line 133

def table
  name = ::Ransack::Adapters::Mongoid::Attributes::Attribute.new(
    self.criteria, :name
    )
  { :name => name }
end