我有很多客户的公司。客户has_many消息。消息具有文本属性。如何从一个模型中获取一个基于关联到另一个模型的ID列表
我试图从没有在消息的文本属性中包含特定单词的客户获取customer_ids的列表。这是我到目前为止有:
company.customers.includes(:messages).references(:messages).where('messages.text NOT LIKE ?', "% summer %")
,当我做到这一点,得到该组中的客户的数量,这是正确的号码(7500),但是当我去掐了IDS像这样:
company.customers.includes(:messages).references(:messages).where('messages.text NOT LIKE ?', "% summer %").pluck(:id).count
返回80000分一样的结果,这是不正确
我到底做错了什么?
编辑:
PG::AmbiguousColumn: ERROR: column reference "id" is ambiguous
LINE 1: SELECT id FROM "customers" LEFT OUTER JOIN "messages" ON "me...
^
: SELECT id FROM "customers" LEFT OUTER JOIN "messages" ON "messages"."customer_id" = "customers"."id" WHERE "customers"."company_id" = $1 AND (messages.text NOT LIKE '% summer %')
PG::AmbiguousColumn: ERROR: column reference "id" is ambiguous
LINE 1: SELECT id FROM "customers" LEFT OUTER JOIN "messages" ON "me...
^
: SELECT id FROM "customers" LEFT OUTER JOIN "messages" ON "messages"."customer_id" = "customers"."id" WHERE "customers"."company_id" = $1 AND (messages.text NOT LIKE '% summer %')
ActiveRecord::StatementInvalid: PG::AmbiguousColumn: ERROR: column reference "id" is ambiguous
LINE 1: SELECT id FROM "customers" LEFT OUTER JOIN "messages" ON "me...
如果删除了'.references什么:从查询'(消息)? ('.joins'触发一个'INNER JOIN'来创建重复项,'.includes'触发'LEFT OUTER JOIN'不会创建重复项) – MrYoshiji
但我没有使用.joins ...我会在哪里放置? –
只需尝试'company.customers.includes(:messages).where('messages.text NOT LIKE?',“%summer%”)。count'来查看它是否有效。如果是这样,我会发布解决问题的答案,这里 – MrYoshiji