Rails 3多态关联:引用关联的belongs_to端的范围不起作用

时间:2011-09-09 18:21:23

标签: ruby-on-rails polymorphic-associations

我有以下多态关联:

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 个答案:

答案 0 :(得分:4)

您必须为联接提供ON语句:

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

否则它会将每个邀请记录与每个事件记录连接起来。