Sha256: c451f4b465c61491e088fe35f6b3b91c4fd97ed9388419a2e9309ed4f806c625
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
module SocialStream module Controllers # Common methods added to ApplicationController module Helpers extend ActiveSupport::Concern included do helper_method :current_subject end module ClassMethods # Add to controllers that have nested subjects. Examples are: # # class ProfilesController < InheritedResources::Base # belongs_to_subjects(:singleton => true) # provides /users/demo/profile # end # # class ActivitiesController < InheritedResources::Base # belongs_to_subjects # provides /users/demo/activities # end # def belongs_to_subjects(options = {}) opts = { :polymorphic => true, :finder => :find_by_slug! }.update(options) args = SocialStream.subjects + [ opts ] belongs_to *args end end module InstanceMethods # Current subject represented by the user. Defaults to the own user def current_subject @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 @current_subject = instance end # Override Cancan#current_ability method to use {#current_subject} def current_ability @current_ability ||= Ability.new(current_subject) 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
social_stream-0.4.4 | lib/social_stream/controllers/helpers.rb |