def move_higher
      if in_list?
        list_class.transaction do
          ids = lock_list!
          current_position = ids.index(id) + 1

          if current_position > 1
            sql = <<-SQL
              #{quoted_position_column} = CASE
              WHEN #{quoted_position_column} = #{current_position} - 1 THEN #{current_position}
              WHEN #{quoted_position_column} = #{current_position} THEN #{current_position} - 1
              ELSE #{quoted_position_column}
              END
            SQL

            set_position current_position - 1
            list_scope.update_all(sql) > 0
          else
            true
          end
        end
      else
        false
      end
    end
def move_higher
      if in_list?
        list_class.transaction do
          ids = lock_list!
          current_position = ids.index(id) + 1

          if current_position > 1
            sql = <<-SQL
              #{quoted_position_column} = CASE
              WHEN #{quoted_position_column} = #{current_position} - 1 THEN #{current_position}
              WHEN #{quoted_position_column} = #{current_position} THEN #{current_position} - 1
              ELSE #{quoted_position_column}
              END
            SQL

            set_position current_position - 1
            list_scope.update_all(sql) > 0
          else
            true
          end
        end
      else
        false
      end
    end
Swap positions with the next higher item, if one exists.