I''ve searched the message boards and the web, and I can''t figure out why I get a weird ''# of arguments'' error... :-\ Thanks in advance for any help. I have three models: class User < ActiveRecord::Base has_many :memberships has_many :groups, :through => :memberships end class Group < ActiveRecord::Base has_many :memberships has_many :users, :through => :memberships end class Membership < ActiveRecord::Base belongs_to :group belongs_to :user end I have a user stored in @user,and I want a list of the groups, so I write: @user.group and get this error: wrong number of arguments (0 for 1) I can reference @user.memberships.find(:first) and it works fine. I can even reference @user.memberships.find(:first).some_random_attribute and it works, too. but if I try @user.memberships.find(:first).group it barfs with the same error! I have also tried (for experimentation): @user.group(1) and I still get the error: wrong number of arguments (0 for 1) Any ideas?? here''s the application trace: e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:1360:in `initialize'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:1360:in `open'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:1360:in `compute_type'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:1066:in `instantiate_without_callbacks'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ callbacks.rb:204:in `instantiate'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:427:in `find_by_sql'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:427:in `collect!'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:427:in `find_by_sql'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:997:in `find_every'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ base.rb:418:in `find'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ associations/has_many_through_association.rb:115:in `find_target'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ associations/association_proxy.rb:131:in `load_target'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ associations/association_proxy.rb:55:in `reload'' e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/ associations.rb:938:in `groups'' #{RAILS_ROOT}/app/views/main/welcome.rhtml:24:in `_run_rhtml_47app47views47main47welcome46rhtml'' --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
I should add that I can call: @user.memberships.find(:first).user and get back to the original user (same as @user). for some reason, though, attempting to follow the "belongs_to group" link creates the error. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
edit: the code I pasted in my first message was incorrect... trying @user.group of course generates a "method not defined error" I was in fact, using @user.groups which generates the "wrong num of args" error. @user.groups(1) generates the same error. sorry for the confusion. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
[[continuing the conversation with myself...]] The error has nothing to do with :through... given the models: class User < ActiveRecord::Base has_many :memberships end class Group < ActiveRecord::Base has_many :memberships end class Membership < ActiveRecord::Base belongs_to :group belongs_to :user end the code: @user.memberships.find(:first).group creates the "too few args" error. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Fred wrote:> The error has nothing to do with :through... > > given the models: > > class User < ActiveRecord::Base > has_many :memberships > end > > class Group < ActiveRecord::Base > has_many :memberships > end > > class Membership < ActiveRecord::Base > belongs_to :group > belongs_to :user > end > > the code: @user.memberships.find(:first).group > creates the "too few args" error.Can you post your migrations for what the tables look like in the db? Those classes look ok, so I''m wondering if you have your table defs set up right. -- Josh Susser http://blog.hasmanythrough.com -- 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 -~----------~----~----~----~------~----~------~--~---
I set up the DBs directly through phpMyAdmin. Here''s the structure i get when I export them... CREATE TABLE `groups` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) collate latin1_general_ci NOT NULL, `short_name` varchar(100) collate latin1_general_ci NOT NULL, `type` varchar(100) collate latin1_general_ci NOT NULL default ''open'' PRIMARY KEY (`id`) ) CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) collate latin1_general_ci default NULL, `phone_num` bigint(15) NOT NULL, `email` varchar(40) collate latin1_general_ci default NULL, `password` varchar(50) collate latin1_general_ci default NULL, PRIMARY KEY (`id`) ) CREATE TABLE `memberships` ( `id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL, `group_id` int(11) NOT NULL, `member_type` int(11) NOT NULL default ''0'' COMMENT ''regular users are type ''''0'''', moderators and owners get a higher type'', `user_status` int(11) NOT NULL default ''1'' COMMENT ''0 is offline; 1 is online'', PRIMARY KEY (`id`) ) --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Fred wrote:> I set up the DBs directly through phpMyAdmin. Here''s the structure i > get when I export them... > > CREATE TABLE `groups` ( > `id` int(11) NOT NULL auto_increment, > `name` varchar(100) collate latin1_general_ci NOT NULL, > `short_name` varchar(100) collate latin1_general_ci NOT NULL, > `type` varchar(100) collate latin1_general_ci NOT NULL default > ''open'' > PRIMARY KEY (`id`) > ) > > CREATE TABLE `users` ( > `id` int(11) NOT NULL auto_increment, > `name` varchar(100) collate latin1_general_ci default NULL, > `phone_num` bigint(15) NOT NULL, > `email` varchar(40) collate latin1_general_ci default NULL, > `password` varchar(50) collate latin1_general_ci default NULL, > PRIMARY KEY (`id`) > ) > > CREATE TABLE `memberships` ( > `id` int(11) NOT NULL auto_increment, > `user_id` int(11) NOT NULL, > `group_id` int(11) NOT NULL, > `member_type` int(11) NOT NULL default ''0'' COMMENT ''regular users > are type ''''0'''', moderators and owners get a higher type'', > `user_status` int(11) NOT NULL default ''1'' COMMENT ''0 is offline; 1 > is online'', > PRIMARY KEY (`id`) > )I tried that out (on edge) and it works fine for me. What version of rails are you running? -- Josh Susser http://blog.hasmanythrough.com -- 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 -~----------~----~----~----~------~----~------~--~---
I just tried re-installing Ruby, Rails and XAMPP on a different computer, copying over only the /app folder from my previous try... here''s the install stats: Ruby version 1.8.6 (i386-mswin32) RubyGems version 0.9.5 Rails version 1.2.5 Active Record version 1.15.5 Action Pack version 1.13.5 Action Web Service version 1.2.5 Action Mailer version 1.3.5 Active Support version 1.4.4 I''m getting the same odd error... :-( is there a good way to figure out where Rails is getting this expectation for an argument? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
I''ve narrowed the error down further. I went into the Rails console and tried: Group.find(1) Error: wrong number of arguments 0 for 1 (!!) and, of course: Group.find() Error: Couldn''t find group without ID Any idea what could prevent the ActiveRecord from getting set up correctly? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Okay... problem solved... I had a column in the Groups table called "type" which is a magic field table. *DOH!* Thanks for you help, Josh. On Nov 22, 9:55 pm, Fred <e...-LoM8on93VnZWk0Htik3J/w@public.gmane.org> wrote:> I''ve narrowed the error down further. > > I went into the Rails console and tried: > > Group.find(1) > > Error: wrong number of arguments 0 for 1 (!!) > > and, of course: > Group.find() > Error: Couldn''t find group without ID > > Any idea what could prevent the ActiveRecord from getting set up > correctly?--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---