Sha256: ce61f3bcdb6097b636eecbb1b3ec969bb777a372bf26d1fe6ef26283e414d6b0

Contents?: true

Size: 809 Bytes

Versions: 1

Compression:

Stored size: 809 Bytes

Contents

# frozen_string_literal: true

class WriterSortType
  include EnumField::DefineEnum

  attr_reader :code, :slug

  def initialize(code, slug = nil)
    @code = code.to_sym
    @slug = slug || @code.to_s
  end

  def title
    I18n.t(code, scope: [:sort_order, :title])
  end

  define_enum do |builder|
    builder.member :completed_orders_count,  object: new('completed_orders_count', 'completed')
    builder.member :overall_ranking, object: new('overall_ranking', 'ranking')
  end

  def to_param
    @code
  end

  class << self
    def default
      overall_ranking
    end

    def find_by_slug(slug)
      return nil if slug.blank?

      all.detect { |i| i.slug.casecmp(slug) == 0 }
    end
  end

  all.map(&:code).each do |code|
    define_method "#{code}?" do
      @code == code
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/models/enums/writer_sort_type.rb