2009-12-09 32 views
1

我有兩個表需要加入,但user_id列值在兩個表中都不相同。所以,我想要做這樣的事情:我需要Rails ActiveRecord的幫助加入 - 我知道如何在SQL中執行它

在我的控制器4current_user.id

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

但使用ActiveRecord的查找替換。

這裏是我的協會:

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 

提前感謝!

+0

你說:「USER_ID列的值不相同兩個表「。你的桌子的模式是什麼?什麼是列名? – 2009-12-09 23:37:15

+0

我的意思是拾音器可以與不同的用戶相關聯,而不是站點。 – 2009-12-10 01:16:03

回答

2

如果您添加到您的用戶模型:

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

你可以做

current_user.site_pickups 
+1

在我的模型中,我不得不這樣做: 'has_many:site_pickups,:through =>:sites,:source =>:pickups' – 2009-12-10 02:29:17

1

試試這個:

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