Rails 3 полиморфные ассоциации: области на стороне own_to, которые ссылаются на ассоциацию, не работают - PullRequest
3 голосов
/ 09 сентября 2011

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

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 Ответ

4 голосов
/ 14 сентября 2011

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

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

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

...