Ruby on rails 3.1 如何使用活动记录执行此查询

Ruby on rails 3.1 如何使用活动记录执行此查询,ruby-on-rails-3.1,where,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 “跟踪器”表有以下列 可跟踪\标识可跟踪\类型 假设我有一个id为1的邮件对象 我想获

我有三种型号

Mailing

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

Link

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

Tracker

belongs_to :trackable, :polymorphic => true
“跟踪器”表有以下列

可跟踪\标识可跟踪\类型

假设我有一个id为1的邮件对象

我想获得所有类型为“链接”和“邮件”的可跟踪对象

mailing.trackers为我提供了与trackable_type=“mailing”trackable_id=1匹配的所有对象

我想从这两种可追踪类型的追踪者那里获得这封邮件的所有记录

当我这样做的时候

mailing.trackers.where(:tracker_id => mailing.links, :trackable_type => "Link")
我什么也得不到

如何获取这些数据


谢谢

我可以这样做:

mail.rb

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

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

现在邮件与跟踪器关联,链接与跟踪器关联。但是,邮件和链接之间没有关联。你可能想研究一下邮件和链接之间的关系。如果你能详细阐述一下你想要的邮件和链接之间的关系,我们也许能给你更多的帮助。
Tracker.where("trackable_id = ? and trackable_type = ? or trackable_id in (?) and trackable_type = ?",self.id, "Mailing", self.links, "Link")