Ooooooooh.. ok - I moved that line from UserActivity class and it's working now. Thanks so much for your help and explanation!
On Mar 30, 4:21 pm, Rick DeNatale <[email protected]> wrote: > On Tue, Mar 30, 2010 at 6:35 PM, khagimoto <[email protected]> wrote: > > Not sure if I understand this completely.. The "activity_type" field > > is in Activity. > > > If I try to do as you suggested, it complains that > > "Association named 'code' was not found" > > when it tries to execute the line Activity.find... > > Did you add the association declaration: > > belongs_to :code, :foreign_key => "activity_type" > > to the Activity class? > > That says that the activities table has a foreign key field called > activity_type which is the key of a record in the codes table. > > And it creates the association called code which the error message is > complaining about. > > > > > On Mar 30, 1:05 pm, Rick DeNatale <[email protected]> wrote: > >> On Tue, Mar 30, 2010 at 3:03 PM, khagimoto <[email protected]> wrote: > >> > I'm trying to replicate a join in RoR that I can do in SQL very > >> > simply. > > >> > Three tables/models that I have are: Users, Users_Activities, > >> > Activities and Codes. > > >> > Users and Activities have appropriate has_many associations through > >> > Users_Activities model, so it's easy to do a join to get all > >> > activities for a given user. > > >> > Codes, on the other hand, is a different story. It's kind of a > >> > "repository" of all codified data. For example, the Activity table > >> > has a "Activity Type" field that is an integer field. To get the > >> > actual Activity Type name, you have to look it up in the Codes table > >> > like so (joining with user table to get all activities for user id > >> > "1"): > > >> > select activities.*, codes.name from activities, users_activities, > >> > codes > >> > where users_activities.user_id = 1 > >> > and users_activities.activity_id = activities.id > >> > and activities.activity_type = codes.id > > >> > I can do part of the above query if i don't include the Codes table > >> > like so: > > >> > Activity.all(:joins => :users_activities, :conditions => > >> > {'users_activities.user_id' => "1"}) > > >> > How do I also join Codes? > > >> class User < AcrtiveRecord::Base > >> has_many :user_activities > >> end > > >> class UserActivity < ActiveRecord::Base > >> belongs_to :user > >> belongs_to :code, :foreign_key => "activity_type" > >> end > > >> Activity.find_all_by_user_id(1, :include => :code) > > >> This will return a collection of all of the activities for user#1 with > >> attached instances of the code for each activity > > >> -- > >> Rick DeNatale > > >> Blog:http://talklikeaduck.denhaven2.com/ > >> Twitter:http://twitter.com/RickDeNatale > >> WWR:http://www.workingwithrails.com/person/9021-rick-denatale > >> LinkedIn:http://www.linkedin.com/in/rickdenatale > > > -- > > 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 [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/rubyonrails-talk?hl=en. > > -- > Rick DeNatale > > Blog:http://talklikeaduck.denhaven2.com/ > Twitter:http://twitter.com/RickDeNatale > WWR:http://www.workingwithrails.com/person/9021-rick-denatale > LinkedIn:http://www.linkedin.com/in/rickdenatale -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

