Refactor Ransack::Adapters from conditionals to classes
This commit is contained in:
parent
5bab95c2a1
commit
94a404c03a
12
README.md
12
README.md
|
@ -746,16 +746,10 @@ called on a `ransack` search returns a `Mongoid::Criteria` object:
|
|||
@people = @q.result.active.order_by(updated_at: -1).limit(10)
|
||||
```
|
||||
|
||||
_NOTE: Ransack currently works with either Active Record or Mongoid, but not
|
||||
NOTE: Ransack currently works with either Active Record or Mongoid, but not
|
||||
both in the same application. If both are present, Ransack will default to
|
||||
Active Record only. Here is the code containing the logic:_
|
||||
|
||||
```ruby
|
||||
@current_adapters ||= {
|
||||
:active_record => defined?(::ActiveRecord::Base),
|
||||
:mongoid => defined?(::Mongoid) && !defined?(::ActiveRecord::Base)
|
||||
}
|
||||
```
|
||||
Active Record only. The logic is contained in
|
||||
`Ransack::Adapters#instantiate_object_mapper` should you need to override it.
|
||||
|
||||
## Semantic Versioning
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ require 'active_support/core_ext'
|
|||
require 'ransack/configuration'
|
||||
require 'ransack/adapters'
|
||||
|
||||
Ransack::Adapters.require_constants
|
||||
Ransack::Adapters.object_mapper.require_constants
|
||||
|
||||
module Ransack
|
||||
extend Configuration
|
||||
|
@ -31,6 +31,6 @@ require 'ransack/helpers'
|
|||
require 'action_controller'
|
||||
require 'ransack/translate'
|
||||
|
||||
Ransack::Adapters.require_adapter
|
||||
Ransack::Adapters.object_mapper.require_adapter
|
||||
|
||||
ActionController::Base.helper Ransack::Helpers::FormHelper
|
||||
|
|
|
@ -1,63 +1,60 @@
|
|||
module Ransack
|
||||
module Adapters
|
||||
|
||||
# TODO: Refactor to remove conditionals
|
||||
|
||||
def self.current_adapters
|
||||
@current_adapters ||= {
|
||||
:active_record => defined?(::ActiveRecord::Base),
|
||||
:mongoid => defined?(::Mongoid) && !defined?(::ActiveRecord::Base)
|
||||
}
|
||||
def self.object_mapper
|
||||
@object_mapper ||= instantiate_object_mapper
|
||||
end
|
||||
|
||||
def self.require_constants
|
||||
if current_adapters[:mongoid]
|
||||
require 'ransack/adapters/mongoid/ransack/constants'
|
||||
def self.instantiate_object_mapper
|
||||
if defined?(::ActiveRecord::Base)
|
||||
ActiveRecordAdapter.new
|
||||
elsif defined?(::Mongoid)
|
||||
MongoidAdapter.new
|
||||
end
|
||||
end
|
||||
|
||||
if current_adapters[:active_record]
|
||||
class ActiveRecordAdapter
|
||||
def require_constants
|
||||
require 'ransack/adapters/active_record/ransack/constants'
|
||||
end
|
||||
end
|
||||
|
||||
def self.require_adapter
|
||||
if current_adapters[:active_record]
|
||||
def require_adapter
|
||||
require 'ransack/adapters/active_record/ransack/translate'
|
||||
require 'ransack/adapters/active_record'
|
||||
end
|
||||
|
||||
if current_adapters[:mongoid]
|
||||
require 'ransack/adapters/mongoid/ransack/translate'
|
||||
require 'ransack/adapters/mongoid'
|
||||
end
|
||||
end
|
||||
|
||||
def self.require_context
|
||||
if current_adapters[:active_record]
|
||||
def require_context
|
||||
require 'ransack/adapters/active_record/ransack/visitor'
|
||||
end
|
||||
|
||||
if current_adapters[:mongoid]
|
||||
require 'ransack/adapters/mongoid/ransack/visitor'
|
||||
end
|
||||
end
|
||||
|
||||
def self.require_nodes
|
||||
if current_adapters[:active_record]
|
||||
def require_nodes
|
||||
require 'ransack/adapters/active_record/ransack/nodes/condition'
|
||||
end
|
||||
|
||||
if current_adapters[:mongoid]
|
||||
require 'ransack/adapters/mongoid/ransack/nodes/condition'
|
||||
def require_search
|
||||
require 'ransack/adapters/active_record/ransack/context'
|
||||
end
|
||||
end
|
||||
|
||||
def self.require_search
|
||||
if current_adapters[:active_record]
|
||||
require 'ransack/adapters/active_record/ransack/context'
|
||||
class MongoidAdapter
|
||||
def require_constants
|
||||
require 'ransack/adapters/mongoid/ransack/constants'
|
||||
end
|
||||
|
||||
if current_adapters[:mongoid]
|
||||
def require_adapter
|
||||
require 'ransack/adapters/mongoid/ransack/translate'
|
||||
require 'ransack/adapters/mongoid'
|
||||
end
|
||||
|
||||
def require_context
|
||||
require 'ransack/adapters/mongoid/ransack/visitor'
|
||||
end
|
||||
|
||||
def require_nodes
|
||||
require 'ransack/adapters/mongoid/ransack/nodes/condition'
|
||||
end
|
||||
|
||||
def require_search
|
||||
require 'ransack/adapters/mongoid/ransack/context'
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
require 'ransack/visitor'
|
||||
Ransack::Adapters.require_context
|
||||
Ransack::Adapters.object_mapper.require_context
|
||||
|
||||
module Ransack
|
||||
class Context
|
||||
|
|
|
@ -3,6 +3,6 @@ require 'ransack/nodes/node'
|
|||
require 'ransack/nodes/attribute'
|
||||
require 'ransack/nodes/value'
|
||||
require 'ransack/nodes/condition'
|
||||
Ransack::Adapters.require_nodes
|
||||
Ransack::Adapters.object_mapper.require_nodes
|
||||
require 'ransack/nodes/sort'
|
||||
require 'ransack/nodes/grouping'
|
||||
|
|
Loading…
Reference in New Issue