Sha256: 3c7c53a4bec8c1e98ebef47bfe3f38ea280f7c3e3349478973dce20082de91a3

Contents?: true

Size: 923 Bytes

Versions: 2

Compression:

Stored size: 923 Bytes

Contents

module SocialStream
  module Controllers
    # Common methods added to ApplicationController
    module Helpers
      extend ActiveSupport::Concern

      included do
        helper_method :current_subject
      end

      module InstanceMethods
        # Current subject represented by the user. Defaults to the own user
        def current_subject
          current_subject_from_session ||
            current_user
        end

        # Set represented subject
        def current_subject= instance
          session[:subject_type] = instance.class.to_s
          session[:subject_id]   = instance.id
        end

        private

        # Get represented subject from session
        def current_subject_from_session
          return unless session[:subject_type].present? && session[:subject_id].present?

          session[:subject_type].constantize.find session[:subject_id]
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
social_stream-0.3.1 lib/social_stream/controllers/helpers.rb
social_stream-0.3.0 lib/social_stream/controllers/helpers.rb