Hi everybody, I''m working with a legacy schema where they saw fit to underscore everything in sight, and I''m wondering if that''s screwing up my associations. I have a table COMMUNITY_TABLE that has a COMMUNITY_ID as well as a COMMUNITY_TYPE_ID. COMMUNITY_TYPE_ID is a pointer to the COMMUNITY_TYPE_TABLE, which has a COMMUNITY_TYPE_ID as its primary key, as well as a string COMMUNITY_TYPE_TABLE. I am translating this as "CommmunityType has_many Communities, and Community belongs_to CommmunityType": class CommunityType < ActiveRecord::Base set_table_name "COMMUNITY_TYPE_TABLE" set_primary_key "COMMUNITY_TYPE_ID" has_many :communities end class Community < ActiveRecord::Base set_table_name "COMMUNITY_TABLE" set_primary_key "COMMUNITY_ID" belongs_to :community_type end What I''d like to do is is start at a community type where my title is "Private" (for example), and then get all the communities that are of that type: CommunityType.find_by_community_type_title("Private").communities But this always returns []. I know I must be missing something but I can''t figure out what. I know that I have data, because I can do this: Community.find(:first, :conditions=>["community_type_id=?", CommunityType.find_by_community_type_title("Private").community_type_id]) and have it return a value. Similarly I can do this: Community.find_first.community_type.community_type_title And have it give back the right answer. So Community knows that it has a pointer into CommunityType, but not the other way around. Anybody know what probably obvious thing I''ve missed? Thanks, D -- 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 -~----------~----~----~----~------~----~------~--~---
First off: Did you have a typo when saying: "s a pointer to the COMMUNITY_TYPE_TABLE, which has a COMMUNITY_TYPE_ID as its primary key, as well as a string COMMUNITY_TYPE_TABLE." did you mean "as a string "COMMUNITY_TYPE_TITLE" ? cos i never saw that title you refer to later anywhere in that explenation Second: I''m pretty new to this stuff myself, so i just throw in my 2 cents, no promise it will work: Tird: try this: class CommunityType < ActiveRecord::Base set_table_name "COMMUNITY_TYPE_TABLE" set_primary_key "COMMUNITY_TYPE_ID" has_many :communities, :foreign_key => "community_type_id" end class Community < ActiveRecord::Base set_table_name "COMMUNITY_TABLE" set_primary_key "COMMUNITY_ID" belongs_to :community_type, :foreign_key => "community_type_id" end i''m not sure if you have to specify :foregn_key in the belongs_to, but for sure in the has_many, cos otherwise Rails would assume that the foreign_key in the COMMUNITY_TABLE would be the primary key "community_id", but its "community_table_id" ... or i got you wrong or all twisted up :-D Give it a shot. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
> as well as a string COMMUNITY_TYPE_TABLE." > did you mean "as a string "COMMUNITY_TYPE_TITLE" ? cos i never saw that > title you refer to later anywhere in that explenationYes, should have said COMMUNITY_TYPE_TITLE. See what I mean about drowning in it? :)> has_many :communities, :foreign_key => "community_type_id" > belongs_to :community_type, :foreign_key => "community_type_id"> i''m not sure if you have to specify :foregn_key in the belongs_to, but > for sure in the has_many, cos otherwise Rails would assume that the > foreign_key in the COMMUNITY_TABLE would be the primary key > "community_id", but its "community_table_id"Didn''t fix it. I''m not sure you''re accurate there, though -- if I''ve said that table B has_many A''s, then I believe the expected behavior is to find B_id inside the A table, not A_id. A_id would be the primary key for A, so B couldn''t use that to find A''s that belonged to B. Thanks for the ideas, D -- 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 -~----------~----~----~----~------~----~------~--~---