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 给了我所有匹配 trackable_type = "Mailing" trackable_id = 1 的对象

我想从两种可跟踪类型的跟踪器中获取此邮件的所有记录。

当我做

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

我什么都得不到。

我怎样才能得到这些数据?

谢谢

4

1 回答 1

0

我能够做到这一点,如下所示:

邮寄.rb

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

这将返回给定 id 的所有邮件类型和链接类型的记录。

于 2012-05-18T05:41:04.107 回答