我正在使用Ruby on Rails 4.1,我想「合併」兩個has_many
模型關聯的結果。也就是說,我有以下型號和協會:如何「合併」兩個`has_many`模型關聯的結果?
class Article < ActiveRecord::Base
has_many :assigned_comments
has_many :unassigned_comments
end
class AssignedComment < ActiveRecord::Base
belongs_to :article
end
class UnassignedComment < ActiveRecord::Base
belongs_to :article
end
我想爲了運行@article.comments
並使其返回兩個數據的@article.assigned_comments
和@article.unassigned_comments
實施「東西」。
我該如何做到這一點?有一些常見的做法?怎麼樣返回數據和數據庫查詢?
我不認爲這是一種常見的做法。你可以用find_by_sql和UNION來做到這一點 –
在我的情況下應該如何顯示'find_by_sql'和'UNION'語句?什麼是缺點? – Backo
可以在任何活動記錄上調用'find_by_sql'(就像'find'),並且可以將任何SQL語句傳遞給它,例如'Article.find_by_sql(「從assigned_comments中選擇COUNT(*)」)。 UNION是一個標準的SQL事物(google瞭解更多)。缺點是它是非標準的軌道 - 它不會像一個普通的協會那樣以一組整齊的模型回來。 –