Ruby on rails 你能给我一个检查缺席情况的范围吗?

Ruby on rails 你能给我一个检查缺席情况的范围吗?,ruby-on-rails,scopes,Ruby On Rails,Scopes,我的数据库中有一个invests表,当我以用户身份执行任务时,我希望将事件.id传递给作用域用户。不邀请(事件) 如何构建此作用域以检查用户ID是否不在其中 class User has_many :invites, :foreign_key => 'participant_id' ... end class Invite belongs_to :participant, :class_name => "User", :foreign_key => "partic

我的数据库中有一个
invests
表,当我以用户身份执行任务时,我希望将
事件
.id传递给作用域
用户。不邀请(事件)

如何构建此作用域以检查用户ID是否不在其中

class User
  has_many :invites, :foreign_key => 'participant_id'
  ...
end

class Invite
  belongs_to :participant, :class_name => "User", :foreign_key => "participant_id"
  ...
end

您可以使用
事件。邀请ID

scope :not_invited, lambda { |event| where("id not in (?)", event.invite_ids) }

我可以这样做
scope:not|invested,lambda{event}where(“id not in(?)”,event.invests.collect{i|i.participant{u id}.join(',')}
您能提供有关您的模式的更多信息吗?也许有一种更有效的方法可以做到这一点,在前面的评论中应该说,
i.id
我没有意识到这一点,我一直在使用collect。那么..\u ids会为我这样做吗?是的,
*\u ids
会为你这样做。当ActiveRecord对象与另一个模型有许多关联时,它将与ActiveRecord对象关联。