Ryan Angilly
2009-Oct-23 15:52 UTC
Modify *_filter methods to allow stacking of declarations?
Hey guys,
I''d like to hear people''s opinions on modifying the filter
class methods
such that we could stack declarations. Take the following setup as an
example:
class DashboardController < ApplicationController
include Filters
include RssPresenter
before_filter :get_user, :only => [:index]
def some_action_that_doesnt_require_user
end
end
module Filters
def get_user
@user = User.find(params[:id])
end
private :get_user
end
module RssPresenter
def self.included(base)
base.before_filter :get_user, :only => [:rss]
end
def rss
#stuff
end
end
Currently, get_user will not be called on RssPresenter#rss because the
before_filter call in DashboardController overrides the base.before_filter
in RssPresenter. Rewriting RssPresenter like this:
module RssPresenter
def self.included(base)
base.before_filter :get_user
end
def rss
#stuff
end
end
will not work because then get_user will get called on every action in
DashboardController.
Let me know what you guys think of this, and I''ll work on a patch if
you''d
like.
Thanks,
Ryan
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---
Ryan Angilly
2009-Oct-23 15:58 UTC
Re: Modify *_filter methods to allow stacking of declarations?
Should probably clarify what I''m actually proposing :)
I''d like it to look like this:
class DashboardController < ApplicationController
include Filters
include RssPresenter
before_filter :get_user, :on => [:index]
def some_action_that_doesnt_require_user
end
end
module Filters
def get_user
@user = User.find(params[:id])
end
private :get_user
end
module RssPresenter
def self.included(base)
base.before_filter :get_user, :on => [:rss]
end
def rss
#stuff
end
end
Where specifying an :on parameter would add actions to the action list for
the given filter method.
On Fri, Oct 23, 2009 at 11:52 AM, Ryan Angilly <angilly@gmail.com> wrote:
> Hey guys,
>
> I''d like to hear people''s opinions on modifying the
filter class methods
> such that we could stack declarations. Take the following setup as an
> example:
>
> class DashboardController < ApplicationController
> include Filters
> include RssPresenter
> before_filter :get_user, :only => [:index]
>
> def some_action_that_doesnt_require_user
> end
> end
>
> module Filters
> def get_user
> @user = User.find(params[:id])
> end
>
> private :get_user
> end
>
> module RssPresenter
> def self.included(base)
> base.before_filter :get_user, :only => [:rss]
> end
>
> def rss
> #stuff
> end
> end
>
>
> Currently, get_user will not be called on RssPresenter#rss because the
> before_filter call in DashboardController overrides the base.before_filter
> in RssPresenter. Rewriting RssPresenter like this:
>
> module RssPresenter
> def self.included(base)
> base.before_filter :get_user
> end
>
> def rss
> #stuff
> end
> end
>
> will not work because then get_user will get called on every action in
> DashboardController.
>
> Let me know what you guys think of this, and I''ll work on a patch
if you''d
> like.
>
> Thanks,
> Ryan
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---