2009-12-09 3 views
1

J'ai 2 tables que je dois joindre mais la valeur de la colonne user_id n'est pas la même dans les deux tables. Donc, je veux faire quelque chose comme ceci:J'ai besoin d'aide avec un Rails ActiveRecord Join - Je sais comment le faire en SQL

Dans mon contrôleur 4 sera substitué par current_user.id

select * from sites join pickups on sites.id = pickups.site_id where sites.user_id = '4'

Mais en utilisant un ActiveRecord Trouver.

Voici mes associations:

class Site < ActiveRecord::Base 
    belongs_to :user 
    has_many :pickups 

class Pickup < ActiveRecord::Base 
belongs_to :site 
belongs_to :user 

class User < ActiveRecord::Base 
    has_one :profile 
    has_many :pickups 
    has_many :sites 

Merci à l'avance!

+0

Vous avez dit « valeur de la colonne user_id est pas le même dans les deux tables ". Quel est le schéma de votre table? Quels sont les noms de colonnes? –

+0

Je veux dire que les micros peuvent être associés à un utilisateur différent des sites. –

Répondre

2

Si vous ajoutez ceci à votre modèle utilisateur:

has_many :site_pickups, :through => :sites, :source => :pickups 

Vous pouvez faire

current_user.site_pickups 
+1

Dans mon modèle je devais faire: 'has_many: site_pickups,: through =>: sites,: source =>: pickups' –

1

essayez ceci:

sites = current_user.sites.find(:all, :include => [:pickup]) 
Questions connexes