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) }
В противном случае он объединяет каждую запись приглашения с каждой записью событий.