2012-07-13 68 views
0

我有兩個表的事件和分配Rails的左連接上的兩個鍵沒有返回連接字段

events      assignments 
=====      ============ 
sport_id      sport_id 
home_school_id    school_id 
name       division_id 

而且我想選擇的事件,並加入像這樣的分配:

joins = "LEFT JOIN assignments sa on events.sport_id = sa.sport_id 
     AND events.home_school_id = sa.school_id" 
events = Event.find(:all, :joins => joins) 

問題是這個不返回除法_id。爲什麼不 ?是因爲沒有關聯嗎?

我應該不能做events.first.division_id?我試過這在MySQL中,它工作正常。

編輯

我的事件模型關聯

has_many :assignments, 
    :primary_key => :sport_id, 
    :foreign_key => :sport_id, 
    :finder_sql => 
     'SELECT sa.* ' + 
     'FROM events e, assignments sa ' + 
     'WHERE e.sport_id = sa.sport_id AND e.home_school_id = sa.school_id ' + 
     'ORDER BY e.event_date' 

回答

0

我結束了使用composite_primary_keys寶石: https://github.com/drnic/composite_primary_keys

這可以讓你有多個外鍵。之後,我做了一個包括(像GrantG的回答)。最後,我用鋼軌GROUP BY函數從其他表中的數據進入散列:

divisions_hash = events.group_by{|item| item.assignment.division_id} 

至於我可以告訴我原本想做的事(加入其他表中的活動記錄中的屬性每條記錄的結果)在Rails中是不可能的。

3

你應該嘗試:

events = Event.find(:all, :include => [:assignments]) 

然後進入內部分工:

events.first.assignment.division_id 

這是假設你告訴事件是h as_many:分配

+0

我的問題是,我在查詢中需要這些數據,所以我可以將所有賦值數據返回到查詢中並按順序排列。這就是爲什麼我使用連接。我將無法調用'.assignment.division_id'(即使在我添加了上述關聯後,它仍然不適用於我)。 – cbron 2012-07-16 15:59:26