0

私は3つのモデルを持っています。

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 の Mailing と Link の両方のタイプのすべてのレコードを返します。

于 2012-05-18T05:41:04.107 に答える