On Feb 12, 5:31 pm, Ball Balla
<rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
wrote:> Say I have a user model with the following
>
> def active
> find(:all, :conditions => {:state => ''active''})
> end
>
> How can I get this working with classic pagination in my controller
> without duplicating my "logic" for finding active users. ie, i do
NOT
> want to do this
>
> def list
> @users = paginate(:users, :conditions => {:state =>
''active''})
> end
>
> Is there anyway I can ''pull'' the conditions out of the
finder method?
If you''re on a recent version of Rails, it would be best to replace
the ''active'' method above with a named scope:
named_scope :active, :conditions => { :state => ''active''
}
Then you can use User.active as a base to find only active users. Note
that the scope supports all the
various find methods, ie:
User.active.find(:all, :order => ''last_name'', :limit =>
5)
will work. See the docs at
http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html#M002120
---
However, on looking at the classic_pagination docs, it may be a bit of
a hassle to create the paginator.
With the new will_paginate, your controller will only need:
def list
@users = User.active.paginate params[:page] || 1 # other options as
needed
end
You may want to consider upgrading...
--Matt Jones
--~--~---------~--~----~------------~-------~--~----~
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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---