Commit 65e80524 by liyijie

feat: ransack 区分 mongoid 和 active_record

parent 77b53086
...@@ -209,8 +209,8 @@ class SimpleController::BaseController < ::InheritedResources::Base ...@@ -209,8 +209,8 @@ class SimpleController::BaseController < ::InheritedResources::Base
end end
end end
association = association.ransack(params[:q]).result unless self.class.instance_variable_get(:@ransack_off) || params[:q].blank? association = ransack_association(association, params[:q]) unless self.class.instance_variable_get(:@ransack_off) || params[:q].blank?
association = association.ransack(params[:sub_q]).result unless self.class.instance_variable_get(:@ransack_off) || params[:sub_q].blank? association = ransack_association(association, params[:sub_q]) unless self.class.instance_variable_get(:@ransack_off) || params[:sub_q].blank?
association = association.distinct unless self.class.instance_variable_get(:@distinct_off) || !association.respond_to?(:distinct) || !active_record? association = association.distinct unless self.class.instance_variable_get(:@distinct_off) || !association.respond_to?(:distinct) || !active_record?
association = association.paginate(page: params[:page], per_page: params[:per_page]) unless self.class.instance_variable_get(:@paginate_off) association = association.paginate(page: params[:page], per_page: params[:per_page]) unless self.class.instance_variable_get(:@paginate_off)
association association
...@@ -239,7 +239,7 @@ class SimpleController::BaseController < ::InheritedResources::Base ...@@ -239,7 +239,7 @@ class SimpleController::BaseController < ::InheritedResources::Base
else else
association = policy_association_chain association = policy_association_chain
end end
association = association.ransack(params[:q].except(:scopes)).result association = ransack_association(association, params[:q].except(:scopes))
end end
end end
...@@ -275,11 +275,11 @@ class SimpleController::BaseController < ::InheritedResources::Base ...@@ -275,11 +275,11 @@ class SimpleController::BaseController < ::InheritedResources::Base
unless self.class.instance_variable_get(:@ransack_off) || params[:sub_q].blank? unless self.class.instance_variable_get(:@ransack_off) || params[:sub_q].blank?
association = Array(params[:sub_q][:scopes]).reduce(association) { |_association, _scope| _association.send(_scope) } if params[:sub_q][:scopes].present? association = Array(params[:sub_q][:scopes]).reduce(association) { |_association, _scope| _association.send(_scope) } if params[:sub_q][:scopes].present?
association = association.ransack(params[:sub_q].except(:scopes)).result association = ransack_association(association, params[:sub_q].except(:scopes))
end end
unless self.class.instance_variable_get(:@ransack_off) || params[:q].blank? unless self.class.instance_variable_get(:@ransack_off) || params[:q].blank?
association = Array(params[:q][:scopes]).reduce(association) { |_association, _scope| _association.send(_scope) } if params[:q][:scopes].present? association = Array(params[:q][:scopes]).reduce(association) { |_association, _scope| _association.send(_scope) } if params[:q][:scopes].present?
association = association.ransack(params[:q].except(:scopes)).result association = ransack_association(association, params[:q].except(:scopes))
end end
association = association.distinct unless self.class.instance_variable_get(:@distinct_off) || !association.respond_to?(:distinct)|| !active_record? association = association.distinct unless self.class.instance_variable_get(:@distinct_off) || !association.respond_to?(:distinct)|| !active_record?
association association
...@@ -323,4 +323,13 @@ class SimpleController::BaseController < ::InheritedResources::Base ...@@ -323,4 +323,13 @@ class SimpleController::BaseController < ::InheritedResources::Base
def active_record? def active_record?
self.class.resource_class < ActiveRecord::Base self.class.resource_class < ActiveRecord::Base
end end
def ransack_association(association, query_params)
if active_record?
association.ransack(query_params).result
else
selector = RansackMongo::Query.parse(query_params)
association.where(selector)
end
end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment