summaryrefslogtreecommitdiff
path: root/app/models/run.rb
blob: 472e8c7e2d11262bad99a3e30aaf99822f25bba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Run < ApplicationRecord
  belongs_to :game
  belongs_to :user
  has_many :checkpoints, dependent: :destroy
  has_many :pokedex_entries, dependent: :destroy

  validates :title, presence: true

  after_create :checkout_to_creator

  def checked_in?
    checkpoints.where.not(kind: :comment).last.checkin?
  end

  def checked_out_user
    last_checkpoint = checkpoints.where.not(kind: :comment).last
    last_checkpoint.checkout? ? last_checkpoint.user : nil
  end

  def last_save_file
    checkpoints.except(save_file: nil).last&.save_file
  end

private

  def checkout_to_creator
    checkpoints.create(user:, kind: :checkout)
  end
end