From a6ad9563d1ca5d63b8aada86f09f9b2aa045d9e3 Mon Sep 17 00:00:00 2001 From: Giovanni Cangiani Date: Tue, 14 May 2024 15:21:49 +0200 Subject: [PATCH] Attempt to fix unwanted position update The function position_changed? returns true even if the position remains the same. This because the corresponding method on the @positioned (`@positioned.position_changed?`) returns true (at least on my 7.1.3.2 version of ActiveRecord). --- lib/positioning/mechanisms.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/positioning/mechanisms.rb b/lib/positioning/mechanisms.rb index 7bfa4ba..ba0d495 100644 --- a/lib/positioning/mechanisms.rb +++ b/lib/positioning/mechanisms.rb @@ -117,7 +117,8 @@ def solidify_position case position_before_type_cast when Integer - self.position = position_before_type_cast.clamp(1..last_position) + clamped_position = position_before_type_cast.clamp(1..last_position) + self.position = clamped_position unless self.position == clamped_position when :first, {after: nil}, {after: ""} self.position = 1 when nil, "", :last, {before: nil}, {before: ""}