1# frozen_string_literal: true 2 3module BoardRecentVisit 4 extend ActiveSupport::Concern 5 6 class_methods do 7 def visited!(user, board) 8 find_or_create_by( 9 "user" => user, 10 board_parent_relation => board.resource_parent, 11 board_relation => board 12 ).tap do |visit| 13 visit.touch 14 end 15 rescue ActiveRecord::RecordNotUnique 16 retry 17 end 18 19 def latest(user, parent, count: nil) 20 visits = by_user_parent(user, parent).order(updated_at: :desc) 21 visits = visits.preload(board_relation) 22 23 visits.first(count) 24 end 25 26 def board_relation 27 :board 28 end 29 30 def board_parent_relation 31 raise NotImplementedError 32 end 33 end 34end 35