如何用条件A + b在活动记录中搜索



我想指定与Person关联的维护和能力的每个条件,并检索它们中的每个条件。

通常,查询将检索包含两个条件的记录:Person。维护和个人能力。

A = Person.maintenances.where(~~~~)
B = Person.abilities.where(~~~)

我想以Person的身份在单个查询中获得上述所有内容。(What I want = A + B in A single query)

另外,我不想有N+1的问题,但我想知道如何防止查询被发出,因为Person的条件。维护和人员。能力是分开的。

class Person << ApplicationRecord
has_many :maintenances
has_many :abilities
end
class Maintenance << ApplicationRecord
belongs_to :person
end
class Ability << ApplicationRecord
belongs_to :person
end

※I'm using MySQL

谢谢。

一个简单的连接应该可以做到:

Person.joins(:maintenance).where(maintenances: {status: 0, example: "yes"}).joins(:ability).where(abilities: {........})

或者类似的东西,应该会产生相同的结果

Person.where(maintenances: Maintenance.where(person: self, ......), abilities: Ability.where(person: self, ......))

相关内容

  • 没有找到相关文章

最新更新