2012-05-17 26 views
0

我有三個型號。如何做到這一點的查詢與活動記錄

Mailing 

    has_many :trackers, :as => :trackable 
    has_many :links 

Link 

    belongs_to :mailing 
    has_many :trackers, :as => :trackable 

Tracker 

belongs_to :trackable, :polymorphic => true 

跟蹤器表有以下幾列

trackable_id trackable_type

說我有ID的郵寄物1.

我想獲得的所有類型的可跟蹤的物體「鏈接「和」郵寄「

mailing = Mailing.find(1) 

mailing.trackers give me所有符合trackable_type =「郵寄」 trackable_id的對象= 1

我想所有的記錄從兩個可跟蹤類型的跟蹤此郵件。

當我做

mailing.trackers.where(:tracker_id => mailing.links, :trackable_type => "Link") 

我什麼也沒得到。

如何才能得到這些數據?

感謝

+0

眼下郵件與跟蹤器相關聯,並鏈接與跟蹤器相關聯。但是,郵件和鏈接之間沒有關聯。你可能想看看郵件和鏈接之間的'has_many:through'關係。也許如果你在郵件和鏈接之間闡述你想要的關係,我們可能會幫助你更多。 – Justin

回答

0

我能夠做到這一點,如下所示:

Mailing.rb

Tracker.where("trackable_id = ? and trackable_type = ? or trackable_id in (?) and trackable_type = ?",self.id, "Mailing", self.links, "Link") 

這會將所有有兩種類型的郵件和鏈接對於給定的id的記錄。