2012-06-28 66 views
0

我需要從兩個相似但不相同的獨立模型中檢索信息。我試圖做的事情,如Rails ActiveRecord ::使用包括模型的關係對象

我已經看過幾種方法,但他們返回的活動對象的數組而不是 ActiveRecord ::關係是需要我的應用程序的許多功能工作。

有什麼辦法可以返回包含兩個表的聯合的ActiveRecord :: Relation對象嗎?

我曾嘗試之類的東西

@group = Mymodel.find_by_sql("SELECT id FROM Mymodels 
    UNION SELECT id FROM AnotherModels") 

,並使用Model.where方法卻無法返回一個ActiveRecord ::關係還探討

編輯:

只是要清楚,我需要返回ActiveRecord ::關係是一個聯合或兩個表的合併

回答

0

你試過MyFirstModel.joins(:my_second_models)?在API here中查看詳細信息joins

編輯:單表繼承是一個更好的解決方案,以解決此問題。見下面的評論。

+0

嘿,謝謝,但不知道這是我在尋找什麼。雖然我需要返回包含兩個模型的所有對象的記錄,但我不想將兩個表連接在一起。這更像是聯盟 –

+1

啊,我現在更瞭解你的問題了。我認爲你應該考慮單表繼承:基於相同的數據庫表創建兩個模型。通過這種方式,您可以輕鬆地將所有內容與關聯關聯起來,但您可以爲每個模型創建獨特的屬性和方法。 –

+0

酷我已經看過這個,但希望有一個更簡單的方法,因爲我正在擴展現有的應用程序。另外還會有相當多的空列。但似乎它可能是唯一的方法 –

0

嘗試這樣:

Model.joins(:other_model).where("attr1" = :attr1, 
           { attr1: "example" }).group(:attr1) 

既然你評論了關於where,我加在電話會議上的where方法。最後,您還可以使用:group對所有內容進行分組。