added some features to ransack/mongoid
This commit is contained in:
parent
915205c02d
commit
d2b02689cb
|
@ -1,11 +1,11 @@
|
|||
require 'ransack/adapters/mongoid/base'
|
||||
Mongoid::Document.send :include, Ransack::Adapters::Mongoid::Base
|
||||
::Mongoid::Document.send :include, Ransack::Adapters::Mongoid::Base
|
||||
|
||||
require 'ransack/adapters/mongoid/attributes/attribute'
|
||||
require 'ransack/adapters/mongoid/table'
|
||||
require 'ransack/adapters/mongoid/inquiry_hash'
|
||||
|
||||
case Mongoid::VERSION
|
||||
case ::Mongoid::VERSION
|
||||
when /^3\.2\./
|
||||
require 'ransack/adapters/mongoid/3.2/context'
|
||||
else
|
||||
|
|
|
@ -54,10 +54,14 @@ module Ransack
|
|||
.new(self, name, opts, &block)
|
||||
end
|
||||
|
||||
def ransackable_attributes(auth_object = nil)
|
||||
def all_ransackable_attributes
|
||||
['id'] + column_names.select { |c| c != '_id' } + _ransackers.keys
|
||||
end
|
||||
|
||||
def ransackable_attributes(auth_object = nil)
|
||||
all_ransackable_attributes
|
||||
end
|
||||
|
||||
def ransortable_attributes(auth_object = nil)
|
||||
# Here so users can overwrite the attributes
|
||||
# that show up in the sort_select
|
||||
|
@ -107,6 +111,13 @@ module Ransack
|
|||
columns.index_by(&:name)
|
||||
end
|
||||
|
||||
def table
|
||||
name = ::Ransack::Adapters::Mongoid::Attributes::Attribute.new(self.criteria, :name)
|
||||
{
|
||||
:name => name
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end # Base
|
||||
|
|
|
@ -27,49 +27,34 @@ class Person
|
|||
|
||||
default_scope -> { order(id: :desc) }
|
||||
|
||||
scope :restricted, lambda { where("restricted = 1") }
|
||||
scope :active, lambda { where("active = 1") }
|
||||
scope :over_age, lambda { |y| where(["age > ?", y]) }
|
||||
scope :restricted, lambda { where(restricted: 1) }
|
||||
scope :active, lambda { where(active: 1) }
|
||||
scope :over_age, lambda { |y| where(:age.gt => y) }
|
||||
|
||||
ransacker :reversed_name, :formatter => proc { |v| v.reverse } do |parent|
|
||||
parent.table[:name]
|
||||
end
|
||||
|
||||
# ransacker :doubled_name do |parent|
|
||||
# Arel::Nodes::InfixOperation.new(
|
||||
# '||', parent.table[:name], parent.table[:name]
|
||||
# )
|
||||
# end
|
||||
ransacker :doubled_name do |parent|
|
||||
# Arel::Nodes::InfixOperation.new(
|
||||
# '||', parent.table[:name], parent.table[:name]
|
||||
# )
|
||||
parent.table[:name]
|
||||
end
|
||||
|
||||
def self.ransackable_attributes(auth_object = nil)
|
||||
if auth_object == :admin
|
||||
super - ['only_sort']
|
||||
all_ransackable_attributes - ['only_sort']
|
||||
else
|
||||
super - ['only_sort', 'only_admin']
|
||||
all_ransackable_attributes - ['only_sort', 'only_admin']
|
||||
end
|
||||
end
|
||||
|
||||
def self.ransortable_attributes(auth_object = nil)
|
||||
if auth_object == :admin
|
||||
super - ['only_search']
|
||||
all_ransackable_attributes - ['only_search']
|
||||
else
|
||||
super - ['only_search', 'only_admin']
|
||||
end
|
||||
end
|
||||
|
||||
def self.ransackable_attributes(auth_object = nil)
|
||||
if auth_object == :admin
|
||||
super - ['only_sort']
|
||||
else
|
||||
super - ['only_sort', 'only_admin']
|
||||
end
|
||||
end
|
||||
|
||||
def self.ransortable_attributes(auth_object = nil)
|
||||
if auth_object == :admin
|
||||
super - ['only_search']
|
||||
else
|
||||
super - ['only_search', 'only_admin']
|
||||
all_ransackable_attributes - ['only_search', 'only_admin']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue