wiz561-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-Apr-03 21:45 UTC
conditions array results in undefined
Hi! I''m having another small problem. I run a small query to get all the group_id''s that are associated with a user. I then take that and run it in another query in order to display the relevant data/group ID the user belongs in. But when I do this, sometimes it returns an error because there''s ''nomethod'' in array, and other times it returns nothing. For example, this is my code... def list username = ''bob'' resUser = User.find(:all, :conditions => ["username = :name", {:name => username}], :select => "group_id") @result_pages, @results = paginate :results, :per_page => 10, :conditions => ["group_id IN (?)", resUser] end In the logs, it does the first query, but for the second, it shows ''null''. SQL (0.000314) SELECT count(*) AS count_all FROM results WHERE (group_id IN (NULL)) ----- Now if I change some of the code to look like this... username = ''bob'' resUser = User.find(:all, :conditions => ["username = :name", {:name => username}]) @result_pages, @results = paginate :results, :per_page => 10, :conditions => ["group_id IN (?)", resUser.group_id] It flashes an NoMethodError exception with... undefined method `group_id'' for #<Array:0x352ca94> To my knowledge, there were some tickets opened on this but it looks like it has been fixed. One of them is here. http://dev.rubyonrails.org/ticket/6150 http://dev.rubyonrails.org/ticket/2887 But I''m still having problems trying to get this to work. If anybody can help, that would be great. Thanks in advanced... --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
wiz561-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:> def list > username = ''bob'' > resUser = User.find(:all, :conditions => ["username = :name", > {:name => username}], :select => "group_id") > > @result_pages, @results = paginate :results, :per_page => > 10, :conditions => ["group_id IN (?)", resUser] > endIn both cases you seem to be expecting a sinlge user, but you are asking for :all matching records instead of just one. Because of this you are getting an array of users, not just one user. So when you call a method like "group_id" you call it on the array, not the user object inside of it. Try this instead res_user = User.find(:first, :conditions => {:username => ''bob''}) -- 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 -~----------~----~----~----~------~----~------~--~---
wiz561-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-Apr-04 14:13 UTC
Re: conditions array results in undefined
That is true and that does work. But, users can belong to multiple groups. So, for example, the table ''users'' can look like this.. Username - Group_ID - Group Bob - 1 - HR Jim - 2 - OCF Tim - 1 - HR Mike - 3 - MED Bob - 3 - MED In the results table, a ''result'' would belong to a group_id. So, if ''Bob'' logs in, he should be able to view MED and HR results, but not OCF. If I use the ''first'' instead of ''all'', then I only get the first instance, which is ''HR''. I hope that makes sense. Thank you again for any help! On Apr 3, 5:46 pm, Alex Wayne <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> wiz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote: > > def list > > username = ''bob'' > > resUser = User.find(:all, :conditions => ["username = :name", > > {:name => username}], :select => "group_id") > > > @result_pages, @results = paginate :results, :per_page => > > 10, :conditions => ["group_id IN (?)", resUser] > > end > > In both cases you seem to be expecting a sinlge user, but you are asking > for :all matching records instead of just one. Because of this you are > getting an array of users, not just one user. So when you call a method > like "group_id" you call it on the array, not the user object inside of > it. > > Try this instead > > res_user = User.find(:first, :conditions => {:username => ''bob''}) > > -- > Posted viahttp://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 -~----------~----~----~----~------~----~------~--~---