Sha256: 7c3c67d561006890cf68ac0d6d4f513e681ffd368d46a9c4a9ff0abe857e2b68
Contents?: true
Size: 1.51 KB
Versions: 1
Compression:
Stored size: 1.51 KB
Contents
# frozen_string_literal: true class ProfilePageType 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, :profile, :form_type_title]) end def disabled? @disabled end define_enum do |builder| builder.member :default, object: new(:default, 'about') builder.member :billing, object: new(:billing, 'billing') builder.member :mailing, object: new(:mailing) end def build_form(params = {}) if mailing? Account::MailingForm.new(params[:mailing]) elsif billing? Account::BillingForm.new(params[:billing]) else if params[:personal].present? Account::ProfileForm.new(params[:personal]) elsif params[:email].present? Account::ProfileEmailForm.new(params[:email]) elsif params[:password].present? Account::ProfilePasswordForm.new(params[:password]) end end 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 find_by_params(params = {}) if params[:mailing].present? mailing elsif params[:billing].present? billing else default end 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/profile_page_type.rb |