Joshua Muheim
2006-Mar-27 18:49 UTC
[Rails] Define methods for controllers, helper AND models?
Hi all
I know that I can define methods in e.g. the application controller and
make them available to the helpers using helper_method(), but how can I
make them available in the models?
I have for example the following method, that I want to be able to call
from any model I wish...
def ApplicationController
helper_method :member
def member
session[:member]
end
end
Thanks for any help. :-)
Joshua
--
Posted via http://www.ruby-forum.com/.
Josh Susser
2006-Mar-27 19:05 UTC
[Rails] Re: Define methods for controllers, helper AND models?
Joshua Muheim wrote:> I know that I can define methods in e.g. the application controller and > make them available to the helpers using helper_method(), but how can I > make them available in the models?You can''t, or at least not without hacking it. If you are following the MVC design pattern, your model shouldn''t know anything about the view or controller. This allows you to use a model in other environments, such as from a cron activated script. You want your business logic in the model, and application logic in the controller/view. So you can''t get to the controller object from the model. But if you have an algorithm you want to use in both places, you can put it in a library module and include it in both places. --josh josh@hasmanythrough.com -- Posted via http://www.ruby-forum.com/.
I''m not sure, but you could try the following
put
module Member
def member
session[:member]
end
end
in a member_modules.rb file in \lib
then in the model
require "member_modules"
class MyModel < ActiveRecord::Base
include Member
end
or perhaps even better in app\controllers\application.rb
class ActiveRecord::Base
include Member
end
You should give it a try...
Saludos
Sas
PS: I''m pretty new to ruby, I''m sure there may be a better way
(hey my message was cut in half!!!) ... then in the model require "member_modules" class MyModel < ActiveRecord::Base include Member end or perhaps even better in app\controllers\application.rb class ActiveRecord::Base include Member end You should give it a try... Saludos Sas PS: I''m pretty new to ruby, I''m sure there may be a better way