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
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