added some features to ransack/mongoid

This commit is contained in:
Zhomart Mukhamejanov 2014-08-02 14:25:52 -07:00
parent 915205c02d
commit d2b02689cb
3 changed files with 27 additions and 31 deletions

View File

@ -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

View File

@ -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

View File

@ -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