【发布时间】:2021-01-03 16:39:20
【问题描述】:
我有一个模特FamilyService。在模型中,我有这些关联:
belongs_to :family
has_many :balance_histories, :through => :family
has_many :balances, :through => :family
执行此命令:FamilyService.where("families.id > 90000").joins(:balances) 工作正常。我明白了:
SELECT families_services.*
FROM families_services
INNER JOIN families ON families.id = families_services.family_id
INNER JOIN balances ON balances.family_id = families.id
WHERE (families.id > 90000)
另外,执行这个查询:FamilyService.where("families.id > 90000").joins(:balance_histories) 给了我这个:
SELECT families_services.*
FROM families_services
INNER JOIN families ON families.id = families_services.family_id
INNER JOIN balance_histories ON balance_histories.family_id = families.id
WHERE (families.id > 90000)
太棒了!
但是当尝试这样做时:FamilyService.where("families.id > 90000").joins(:balances, :balance_histories)。我明白了:
SELECT families_services.*
FROM families_services
INNER JOIN families ON families.id = families_services.family_id
INNER JOIN balances ON balances.family_id = families.id
INNER JOIN families families_families_services_join ON families_families_services_join.id = families_services.family_id
INNER JOIN balance_histories ON balance_histories.family_id = families_families_services_join.id
WHERE (families.id > 90000)
这是错误的(家庭family_families_services_join ONfamily_families_services_join.id)。 如何解决?
【问题讨论】:
-
真的错了吗?请把所有 3 个模型的描述都包括在内吗?
标签: mysql ruby-on-rails