From 547b65e6dff7311012de5cefb40e7c7b32a4fc85 Mon Sep 17 00:00:00 2001 From: miks Date: Thu, 15 Nov 2012 11:39:26 +0200 Subject: [PATCH 1/2] More reliable lower/higher item detection --- lib/acts_as_list/active_record/acts/list.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/acts_as_list/active_record/acts/list.rb b/lib/acts_as_list/active_record/acts/list.rb index e61f8f03..a74c1706 100644 --- a/lib/acts_as_list/active_record/acts/list.rb +++ b/lib/acts_as_list/active_record/acts/list.rb @@ -174,7 +174,7 @@ def last? def higher_item return nil unless in_list? acts_as_list_class.unscoped.find(:first, :conditions => - "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i - 1).to_s}" + "#{scope_condition} AND #{position_column} < #{(send(position_column).to_i).to_s}" ) end @@ -182,7 +182,7 @@ def higher_item def lower_item return nil unless in_list? acts_as_list_class.unscoped.find(:first, :conditions => - "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i + 1).to_s}" + "#{scope_condition} AND #{position_column} > #{(send(position_column).to_i).to_s}" ) end From 33d943d8b472b3597627dbb7d74ce66065c4b39b Mon Sep 17 00:00:00 2001 From: miks Date: Thu, 15 Nov 2012 11:50:10 +0200 Subject: [PATCH 2/2] Add missing order params --- lib/acts_as_list/active_record/acts/list.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/acts_as_list/active_record/acts/list.rb b/lib/acts_as_list/active_record/acts/list.rb index a74c1706..b6eaed0c 100644 --- a/lib/acts_as_list/active_record/acts/list.rb +++ b/lib/acts_as_list/active_record/acts/list.rb @@ -174,7 +174,8 @@ def last? def higher_item return nil unless in_list? acts_as_list_class.unscoped.find(:first, :conditions => - "#{scope_condition} AND #{position_column} < #{(send(position_column).to_i).to_s}" + "#{scope_condition} AND #{position_column} < #{(send(position_column).to_i).to_s}", + :order => "#{acts_as_list_class.table_name}.#{position_column} DESC" ) end @@ -182,7 +183,8 @@ def higher_item def lower_item return nil unless in_list? acts_as_list_class.unscoped.find(:first, :conditions => - "#{scope_condition} AND #{position_column} > #{(send(position_column).to_i).to_s}" + "#{scope_condition} AND #{position_column} > #{(send(position_column).to_i).to_s}", + :order => "#{acts_as_list_class.table_name}.#{position_column} ASC" ) end