我有三个型号。 Organizer
,Organization
,Connection
。
# Schema Information
#
# Table name: connections
#
# organizer_id :integer
# organization_id :integer
# admin :boolean default(false)
class Connection < ActiveRecord::Base
belongs_to :organizer
belongs_to :organization
end
-----------
# Schema Information
#
# Table name: organizations
#
# name :string
class Organization < ActiveRecord::Base
has_many :connections
has_many :organizers, through: :connections
end
-----------
# Schema Information
#
# Table name: organizers
#
# name :string
# ...
class Organizer < ActiveRecord::Base
has_many :connections
has_many :organizations, through: :connections
end
通过这种关联,我可以很容易地找到组织者所拥有的组织,反之亦然。我过于复杂的部分是如何告诉组织者 admin 到哪个组织。我将此基于admin
表格上的Connection
布尔值。
到目前为止,我能够找到具有此查询的组织的管理员:
Organization.find(...).connections.where(admin: true)
从那里开始,我想我会检查这个关联includes?
是否是一个特定的组织者,但是当它应该是真的时它会给我错误。
Organization.find(...).connections.where(admin: true).include?(Organizer.find(...))
但我正在寻找一种方法来检查特定organizer
是否为特定organization
的管理员。也许我设置关联的方式不正确。今天让我感到困惑。对此有任何建议真的很感激。
声明: 每个组织可以有多个管理员。
答案 0 :(得分:1)
现在,您在一系列连接中搜索组织者,导致该语句返回false。您需要首先将连接映射到它们所属的组织器,如下所示:
Organization.find(...).connections.where(admin: true).map(&:organizer).include?(Organizer.find(...))