我有一个Entry模型属于组织模型......两次。
MAIL FROM
我尝试编写单个AR查询,使用class Entry < ActiveRecord::Base
belongs_to :organization
belongs_to :temp_organization, class_name: "Organization"
end
拉出关联的组织和temp_organization名称。
pluck
此崩溃时出现以下错误:
Entry
.includes(:organization, :temp_organization)
.pluck('organizations.name', 'temp_organizations.name')
哪个有意义 - 没有ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: missing FROM-clause entry for table "temp_organizations"
表,因为该关联是通过常规temp_organizations
表管理的。
如何让organizations
提取temp_organization名称?
答案 0 :(得分:1)
尝试使用,
Entry
.includes(:organization, :temp_organization)
.references(:organization, :temp_organization)
.pluck('organizations.name', 'entries_temp_organizations.name')
答案 1 :(得分:1)
因此,对于同一个表的多个连接,AR会做一些魔法并重命名表,这就是为什么你不能提取正确的表名。
您可以通过查看生成的sql来检查表名是什么:
Entry.includes(:organization, :temp_organization).to_sql
你应该得到类似的东西:
...INNER JOIN \"organizations\" \"entries_temp_organizations\" ON \"entries_temp_organizations\"...
我怀疑表名是&#39; entries_temp_organizations&#39; (遵循连接表的字母顺序的AR规则)。使用正确的表名称可以解决这个问题。