Sha256: 698f2e1f58d92b44b287e3ee0cc041abbbf27f01d8d9301998aa822d1f773e0f

Contents?: true

Size: 914 Bytes

Versions: 5

Compression:

Stored size: 914 Bytes

Contents

module OpenStax
  module Accounts
    class User < ActiveRecord::Base

      validates :username, uniqueness: true
      validates :username, presence: true
      validates :openstax_uid, presence: true

      # first and last names are not required

      def name
        (first_name || last_name) ? [first_name, last_name].compact.join(" ") : username
      end

      def casual_name
        first_name || username
      end    

      def is_anonymous?
        is_anonymous == true
      end

      attr_accessor :is_anonymous

      def self.anonymous
        @@anonymous ||= AnonymousUser.new
      end

      class AnonymousUser < User
        before_save { false } 
        def initialize(attributes=nil)
          super
          self.is_anonymous = true
          self.first_name   = 'Guest'
          self.last_name    = 'User'
          self.openstax_uid = nil
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
openstax_accounts-0.3.0 app/models/openstax/accounts/user.rb
openstax_accounts-0.3 app/models/openstax/accounts/user.rb
openstax_accounts-0.2.1 app/models/openstax/accounts/user.rb
openstax_accounts-0.2.0 app/models/openstax/accounts/user.rb
openstax_accounts-0.1.0 app/models/openstax/accounts/user.rb