Sha256: d98b4e2a1cdc1b30f1f17fe74db0093b854bd2718618712454d9e71187f54566
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true class DiscountsPageType include EnumField::DefineEnum attr_reader :code, :slug, :disabled def initialize(code, slug = nil, disabled = false) @code = code.to_sym @slug = (slug || code).to_s @disabled = disabled end def title I18n.t(code, scope: [:account, :discounts, :type_title]) end def disabled? @disabled end def notify?(notifications) case @code when :onetime notifications.discounts_personal? when :lifetime notifications.discounts_lifetime? else false end end define_enum do |builder| builder.member :onetime, object: new(:onetime, 'one-time') builder.member :lifetime, object: new(:lifetime) builder.member :extras, object: new(:extras) end all.map(&:code).each do |code| define_method "#{code}?" do @code == code end end class << self def find_by_slug(slug) return first if slug.nil? all.detect { |type| type.slug == slug } end def enabled all.reject(&:disabled?) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
translation_cms-0.1.5 | app/models/enums/discounts_page_type.rb |