我有三个型号。
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的邮件对象。
我希望获得“Link”和“Mailing”类型的所有可追踪对象
mailing = Mailing.find(1)
mailing.trackers给了我所有匹配trackable_type =“Mailing”的对象trackable_id = 1
我想从两种可跟踪类型的跟踪器中获取此邮件的所有记录。
当我这样做时
mailing.trackers.where(:tracker_id => mailing.links, :trackable_type => "Link")
我一无所获。
如何获取此数据?
由于
答案 0 :(得分:0)
我能够按照以下方式执行此操作:
Mailing.rb
Tracker.where("trackable_id = ? and trackable_type = ? or trackable_id in (?) and trackable_type = ?",self.id, "Mailing", self.links, "Link")
这将返回给定ID的所有类型Mailing和Link类型的记录。