From fdd6f25fbda4fa2c1f307248cddd316db88d2771 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Tue, 3 Oct 2017 17:39:54 +0200 Subject: RansackDateFilter: Move `end` statement and jiggle indentation An `end` statement was missing to close off the `set_date_time_params` method. Wondering if this is what was causing these test failures on the build server: 1) ComplianceCheckSetsController GET index should be successful Failure/Error: scope = self.ransack_period_range(scope: @compliance_check_sets, error_message: t('compliance_check_sets.filters.error_period_filter'), query: :where_created_at_between) NoMethodError: undefined method `ransack_period_range' for # # ./app/controllers/compliance_check_sets_controller.rb:11:in `block in index' # ./app/controllers/compliance_check_sets_controller.rb:10:in `index' # ./spec/controllers/compliance_check_sets_controller_spec.rb:17:in `block (3 levels) in ' 2) Workbenches permissions on show view if present → shows the corresponding button Failure/Error: scope = self.ransack_period_range(scope: scope, error_message: t('referentials.errors.validity_period'), query: :in_periode) NoMethodError: undefined method `ransack_period_range' for # # ./app/controllers/workbenches_controller.rb:15:in `show' # ./spec/features/workbenches_permissions_spec.rb:15:in `block (3 levels) in ' Worth a try. --- app/controllers/concerns/ransack_date_filter.rb | 55 +++++++++++++------------ 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/app/controllers/concerns/ransack_date_filter.rb b/app/controllers/concerns/ransack_date_filter.rb index 225fd91ee..9c2755186 100644 --- a/app/controllers/concerns/ransack_date_filter.rb +++ b/app/controllers/concerns/ransack_date_filter.rb @@ -2,40 +2,41 @@ module RansackDateFilter extend ActiveSupport::Concern cattr_accessor :date_param - included do - - def set_date_time_params(param_name, klass) - start_date = [] - end_date = [] - - if params[:q] && params[:q][param_name] && !params[:q][param_name].has_value?(nil) && !params[:q][param_name].has_value?("") - [1, 2, 3].each do |key| - start_date << params[:q][param_name]["start_date(#{key}i)"].to_i - end_date << params[:q][param_name]["end_date(#{key}i)"].to_i - end - params[:q].delete([param_name]) - - if klass == DateTime - @begin_range = klass.new(*start_date,0,0,0) rescue nil - @end_range = klass.new(*end_date,23,59,59) rescue nil - else - @begin_range = klass.new(*start_date) rescue nil - @end_range = klass.new(*end_date) rescue nil + included do + + def set_date_time_params(param_name, klass) + start_date = [] + end_date = [] + + if params[:q] && params[:q][param_name] && !params[:q][param_name].has_value?(nil) && !params[:q][param_name].has_value?("") + [1, 2, 3].each do |key| + start_date << params[:q][param_name]["start_date(#{key}i)"].to_i + end_date << params[:q][param_name]["end_date(#{key}i)"].to_i end - end - # Fake ransack filter - def ransack_period_range **options - return options[:scope] unless !!@begin_range && !!@end_range + params[:q].delete([param_name]) - if @begin_range > @end_range - flash.now[:error] = options[:error_message] + if klass == DateTime + @begin_range = klass.new(*start_date,0,0,0) rescue nil + @end_range = klass.new(*end_date,23,59,59) rescue nil else - scope = options[:scope].send options[:query], @begin_range..@end_range + @begin_range = klass.new(*start_date) rescue nil + @end_range = klass.new(*end_date) rescue nil end - scope end end + # Fake ransack filter + def ransack_period_range **options + return options[:scope] unless !!@begin_range && !!@end_range + + if @begin_range > @end_range + flash.now[:error] = options[:error_message] + else + scope = options[:scope].send options[:query], @begin_range..@end_range + end + scope + end end + end \ No newline at end of file -- cgit v1.2.3