如何使用活动记录执行此查询

时间:2012-05-17 09:05:03

标签: ruby-on-rails-3.1 where

我有三个型号。

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")

我一无所获。

如何获取此数据?

由于

1 个答案:

答案 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类型的记录。