hummingbird-me/kitsu-server

View on GitHub
app/models/chapter.rb

Summary

Maintainability
A
25 mins
Test Coverage
A
90%
class Chapter < ApplicationRecord
  include Titleable
  include DescriptionSanitation
  include UnitThumbnailUploader::Attachment(:thumbnail)

  belongs_to :manga, inverse_of: :chapters
  belongs_to :volume, counter_cache: true, optional: true, inverse_of: :chapters

  validates :number, presence: true
  validates :volume_number, presence: true

  scope :for_progress, ->(progress) do
    order(:volume_number, :number).limit(progress)
  end

  def self.create_defaults(count)
    chapters = ((1..count).to_a - pluck(:number)).map do |n|
      new(number: n, volume_number: 1)
    end
    transaction { chapters.each(&:save) }
    where("number > #{count}").destroy_all
  end

  def feed
    ChapterFeed.new(id)
  end

  after_commit(on: :create) { feed.setup! }

  def rails_admin_label
    "V#{volume_number}C#{number} #{canonical_title}"
  end
end