Rails 3 полиморфные ассоциации: области на стороне own_to, которые ссылаются на ассоциацию, не работают

У меня есть следующие полиморфные ассоциации:

class Invite < ActiveRecord::Base
  belongs_to :inviteable, :polymorphic => true 

class Event < ActiveRecord::Base
  has_many :invites, :as => :inviteable, :dependent => :destroy

class Team < ActiveRecord::Base
  has_many :invites, :as => :inviteable, :dependent => :destroy

Я пытаюсь создать области для приглашений, относящихся к конкретным событиям и будущим событиям:

(in Invite.rb)
  scope :to_events, where('inviteable_type = ?', "Event")
  scope :to_future_events, lambda { self.to_events.joins("join events").where('events.starttime > ?', Time.now) }

Область действия to_events работает отлично; to_future_events возвращает правильное подмножество приглашений, но возвращает много копий каждого. Есть идеи почему? Есть ли более чистый /Rails-ier способ выполнить то, что я пытаюсь сделать?

1 ответ

Решение

Вы должны предоставить оператор ON для объединения:

scope :to_future_events, lambda { self.to_events.joins("join events on events.id = invites.inviteable_id").where('events.starttime > ?', Time.now) }

В противном случае он объединяет каждую запись приглашения с каждой записью событий.

Другие вопросы по тегам