Scope lists through user.lists_dataset and drop the @list ivar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LG4iASZnHb1yEM1JAASiWn
change
commit 06965cdb445b65e3824651b64065a5d663fbeaa9
author Claude <noreply@anthropic.com>
date
parent 261c8368
diff --git a/lib/rank_king/web.rb b/lib/rank_king/web.rb
index ae2d085..38b8825 100644
--- a/lib/rank_king/web.rb
+++ b/lib/rank_king/web.rb
@@ -24,7 +24,7 @@ module RankKing
       user = User.find_or_create(login: ProxyAuth.login(r.env))
 
       r.root do
-        lists = List.where(user_id: user.id).order(:id).all
+        lists = user.lists_dataset.order(:id).all
         Views::Home.new(lists: lists, csrf: method(:csrf_token)).call
       end
 
@@ -56,12 +56,12 @@ module RankKing
 
         r.on Integer do |list_id|
           # Lists are private to their owner.
-          @list = List.where(id: list_id, user_id: user.id).first
-          r.halt 404 unless @list
+          list = user.lists_dataset.where(id: list_id).first
+          r.halt 404 unless list
 
           r.is do
             r.get do
-              Views::ListViews::Show.new(list: @list, csrf: method(:csrf_token)).call
+              Views::ListViews::Show.new(list: list, csrf: method(:csrf_token)).call
             end
           end
 
@@ -71,17 +71,17 @@ module RankKing
               winner_id = r.params["winner_id"].to_i
               loser_id = r.params["loser_id"].to_i
 
-              axis = @list.axes_dataset.where(id: axis_id).first
+              axis = list.axes_dataset.where(id: axis_id).first
               r.halt 422 unless axis
 
-              winner = @list.items_dataset.where(id: winner_id).first
-              loser = @list.items_dataset.where(id: loser_id).first
+              winner = list.items_dataset.where(id: winner_id).first
+              loser = list.items_dataset.where(id: loser_id).first
               r.halt 422 unless winner && loser
               r.halt 422 if winner.id == loser.id
 
               Result.create(axis_id: axis.id, winner_id: winner.id, loser_id: loser.id)
 
-              r.redirect "/lists/#{@list.id}"
+              r.redirect "/lists/#{list.id}"
             end
           end
         end
diff --git a/sig/rank_king/models.rbs b/sig/rank_king/models.rbs
index f42f7c0..c9b1905 100644
--- a/sig/rank_king/models.rbs
+++ b/sig/rank_king/models.rbs
@@ -5,6 +5,7 @@ module RankKing
   class User < Sequel::Model
     def login: () -> String
     def lists: () -> Array[List]
+    def lists_dataset: () -> Sequel::Dataset[List]
   end
 
   class List < Sequel::Model