【发布时间】:2011-09-09 18:21:23
【问题描述】:
我有以下多态关联:
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的方式来完成我想要完成的事情?
【问题讨论】:
-
如果您正在寻找“Rails Way”,您可能应该将“Invite”更改为“Invitation”以明确模型是名词,而不是动词。我想这会让你的代码读起来更好一点。
标签: ruby-on-rails polymorphic-associations