Theo Graham-brown
2008-Nov-25 22:40 UTC
Why can''t I ''count'' the results from a model ''find''?
Hi,
I''m running the following code in my show() method:
@articles = Article.find(:all, :conditions => ["issue_id =
?",
@issue.id], :order => ''`column`,position'')
if (params[:article_id])
@article_id = params[:article_id].to_i
c = 0
total = @articles.count
while (c < total)
if @article_id == @articles[c].id
if c == 0
@article_prev = @articles.last.id
else
@article_prev = @articles[(c-1)].id
end
if ((c+1) == total)
@article_next = @articles.first.id
else
@article_next = @articles[(c+1)].id
end
end
end
else
@article_id = 0
@article_main = @articles.first.id
@article_prev = @articles.last.id
@article_next = @articles[1].id
end
Now to be honest this code is already a bit odd for me but I have no
idea how else to approach this in Ruby on Rails. So I''ve attempted to
do
it PHP-style. But I''m being told that I can''t do
@articles.count
Why? I have a user model and a user has a one to many relationship with
articles so I know that: @user.articles.count works. Hence I''m guessing
there''s something big I''m missing here.
So, how am I going to do this? How do I easily cycle through my list of
articles and get the previous and next ones?
Any help greatly appreciated. I''ve been going back and forth over my
books and forums but I can''t seem to formulate the question to be able
to ask it.
--
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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Philip Hallstrom
2008-Nov-25 23:10 UTC
Re: Why can''t I ''count'' the results from a model ''find''?
On Nov 25, 2008, at 2:40 PM, Theo Graham-brown wrote:> > Hi, > > I''m running the following code in my show() method: > > @articles = Article.find(:all, :conditions => ["issue_id = ?", > @issue.id], :order => ''`column`,position'') > > if (params[:article_id]) > @article_id = params[:article_id].to_i > c = 0 > total = @articles.count....> end > > Now to be honest this code is already a bit odd for me but I have no > idea how else to approach this in Ruby on Rails. So I''ve attempted > to do > it PHP-style. But I''m being told that I can''t do @articles.count > > Why? I have a user model and a user has a one to many relationship > with > articles so I know that: @user.articles.count works. Hence I''m > guessing > there''s something big I''m missing here. > > So, how am I going to do this? How do I easily cycle through my list > of > articles and get the previous and next ones?@user.articles.count is Rails magic. It''s not actually fetching everything and then counting it up, it''s looking at the associations and building a "SELECT COUNT...." @articles above is an array. Try @articles.size. -philip --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Nov-26 18:16 UTC
Re: Why can''t I ''count'' the results from a model ''find''?
On Nov 25, 11:10 pm, Philip Hallstrom <phi...-LSG90OXdqQE@public.gmane.org> wrote:> On Nov 25, 2008, at 2:40 PM, Theo Graham-brown wrote: > > > @user.articles.count is Rails magic. It''s not actually fetching > everything and then counting it up, it''s looking at the associations > and building a "SELECT COUNT...." >To be quite precise, @user.articles is not an array, it''s an association proxy. Fred> @articles above is an array. Try @articles.size. > > -philip--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Theo Graham-brown
2008-Nov-27 16:13 UTC
Re: Why can''t I ''count'' the results from a model ''find''?
Thanks both of you. I''ve got it working now. :-) -- 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---