我有两个处于多对多关系中的模型。
一种Capability
模型:
class Capability < ApplicationRecord
…
end
和一个Teammate
:
class Teammate < ApplicationRecord
has_many :teammate_capabilities
has_many :capabilities, through: :teammate_capabilities
end
加入模型:
class TeammateCapability < ApplicationRecord
belongs_to :teammate
belongs_to :capability
end
现在我想找到所有至少拥有一组能力的队友。我试过了:
capabilities = Capability.where(id: [197, 198]) # works
teammates = Teammate.where(capabilities: capabilities) # blows up
第二行结果为:
=> PG::UndefinedColumn: ERROR: column "capability_id" does not exist
LINE 1: ...ROM "teammates" WHERE "teammates"."id" IN (SELECT capability...
我做错了什么?我的查询的正确语法是什么?我想收集所有至少有能力197或能力198的队友。
Teammate.joins(:capabilites).where(capabilities: {id: capabilities})
您需要联接表,然后遍历where子句中的关系。这应该行得通。