diff --git a/lib/acts_as_list/active_record/acts/list.rb b/lib/acts_as_list/active_record/acts/list.rb index d6265287..7d2eb6eb 100644 --- a/lib/acts_as_list/active_record/acts/list.rb +++ b/lib/acts_as_list/active_record/acts/list.rb @@ -176,7 +176,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 - 1).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 @@ -184,7 +185,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 + 1).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