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...
On Mar 30, 1:05 pm, Rick DeNatale <rick.denat...@gmail.com> wrote:
> On Tue, Mar 30, 2010 at 3:03 PM, khagimoto <kumi.hagim...@gmail.com> 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 rubyonrails-talk@googlegroups.com.
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.
No comments:
Post a Comment