I'm trying to enhance a set of controllers which can set the level of security. [code] Class MenuControllder < ApplicationController include BasicTest end
def basic_filter raise @test end end [/code]
This doesn't work at all. @test is nil by the time it calls basic_filter.
Actually you've got two totally unrelated @test variables here: the one belonging to the module object BasicTest, and one in an instance method which will belong to whatever object calls the method (basic_filter). Instance variables always belong to "self", which can be an object of any class.
I need a new instance of BasicTest for each controller, and I need it to not be accessed by other controllers that are inheriting BasicTest.
Modules don't have instances, and they don't get inherited. So I'm not totally sure what you're aiming for here. But maybe instance_variable_set would help? I'm thinking of something like (untested):
def self.included(controller) controller.before_filter do |c| # c is an instance of controller c.instance_variable_set("@test", controller.name) end end
though since you can always get from a controller instance to its class's name easily (self.class.name), you don't really need to store this information.
Can you explain a little more what you want to happen?