Sha256: a0c7dc7affe67804caa76e676480d63453bef50eabb52fbe6a6558896c38564d

Contents?: true

Size: 847 Bytes

Versions: 7

Compression:

Stored size: 847 Bytes

Contents

module DemoMode
  class Session < ActiveRecord::Base
    attribute :variant, default: :default

    validates :persona_name, :variant, presence: true
    belongs_to :signinable, polymorphic: true, optional: true

    before_create :set_password!
    after_create -> { AccountGenerationJob.perform_later(self) }

    delegate :begin_demo,
             :custom_sign_in?,
             :display_credentials?,
             to: :persona,
             allow_nil: true

    def signinable_username
      signinable.public_send(DemoMode.signinable_username_method)
    end

    private

    def set_password!
      self.signinable_password ||= DemoMode.current_password
    end

    # Heads up: finding a persona is not guaranteed (e.g. past sessions)
    def persona
      DemoMode.personas.find { |p| p.name.to_s == persona_name.to_s }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
demo_mode-1.2.0 app/models/demo_mode/session.rb
demo_mode-1.1.1 app/models/demo_mode/session.rb
demo_mode-1.1.0 app/models/demo_mode/session.rb
demo_mode-1.0.3 app/models/demo_mode/session.rb
demo_mode-1.0.2 app/models/demo_mode/session.rb
demo_mode-1.0.1 app/models/demo_mode/session.rb
demo_mode-1.0.0 app/models/demo_mode/session.rb