2012-08-16 61 views
0

我正在構建一個Rails 3.2.6應用程序,並且在此應用程序中我獲得了用戶,事件和檢查。 我也在使用Postgres。無法獲得包含和連接在Ruby on Rails中工作

用戶

has_many :events 

has_many :checkins 

活動

belongs_to :user 

has_many :checkins 

簽到

belongs_to :user 

belongs_to :event 

當我呼籲所有CHEC (使用下面的代碼)我也想要 獲取簽入事件的所有基本數據,但它不起作用。 我只收到簽入的數據,沒有任何事件。哪裏不對?

current_user.checkins.includes(:event) 

我想這太:

current_user.checkins.joins(:event) 

UPDATE

我這樣做是爲了讓所有的事件數據,而不是籤數據。這是正確的 這樣做嗎?

checkins = current_user.checkins 

@array = Array.new 

@array = checkins.collect {|checkin| checkin.event} 

render :json => {:results => @array} 

回答

1

你沒有做錯什麼用current_user.checkins.includes(:event),但你可能期待的東西比什麼Rails是應該做的事情不同。爲了訪問每個事件,您需要通過簽入來完成。這裏有一個你可能做的事情的例子:

checkins = current_user.checkins.includes(:event) 
checkins.each do |checkin| 
    puts "I'm at the event: #{checkin.event}" 
end 
+0

看起來不錯!基本上,我需要實現的是獲取所有事件數據,而不是每個「簽入」的簽入數據並將其返回。我怎樣才能做到這一點? – 2012-08-16 12:02:00

+0

我更新了我的代碼。這個代碼是一個好習慣嗎? – 2012-08-16 12:08:49

0

聽起來像你想要的是一個有很多通過關係。此添加到用戶模型(你已經宣佈簽入協會後)

has_many :checked_in_events, :through => :checkins, :source => :event 

然後,你可以做

current_user.checked_in_events 
+0

聽起來很有趣。用戶模型應該是這樣嗎? – 2012-08-16 12:13:03

+0

是的,在用戶模型中。 – 2012-08-16 12:13:47

+0

但這不會是一件壞事。用戶應該能夠擁有自己創建的事件並能夠簽入其他人的事件? – 2012-08-16 12:30:51

相關問題