Hey all, Let's say you have a controller class and you include a module:
class ApplicationController < ActionController::Base include AuthenticationSystem def default_page case when cu.group_is?(:a) then a_path when cu.group_is?(:b) then b_path when cu.group_is?(:c) then c_path end end end Notice how this method makes a call to method cu. Now in order for cu to exist, that means the module methods must be copied into ApplicationController before any of its methods are called by subclasses: class DashboardController < ApplicationController def root redirect_to default_page end end If the module methods were not included prior to default_page being called in ApplicationController, since default_page calls method cu defined in the module AuthenticationSystem, it would throw error. That part is clear. But what is unclear is what's the whole purpose of this: module AuthenticationSystem def self.included(base) base.send :helper_method, :current_user end end If, for example, current_user setter/getter are already declared in module: def current_user @current_user = User.find_by_id(session[:user_id]) end alias :cu :current_user def current_user=(new_user) session[:user_id] = new_user ? new_user.id : nil @current_user = new_user end and thus will be copied into the ApplicationController class, then what's the point of sending it to the class using base.send when it will already be copied into the class? Or is base.send like a contructor method that gets executed before anything else in the module and therefore when its included in a class, it acts as consutrcotr of class and gets called prior to any methods of the class being called? Thanks for response. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.