[英]Query an array of json with Active Record (Rails 4/postgresql9.4)
[英]Rails Active Record Query Breaking When Switching To PostgreSQL
大家好,我收到此错误:
column "article_tags.id" must appear in the GROUP BY clause or be used in an aggregate function
当我使用以下查询切换到PostgreSQL时:
@article_tags = ArticleTag.includes(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).group('tags.slug').order('tags.articles_count DESC')
我尝试通过仅选择相关记录来修复它,如下所示:
@article_tags = ArticleTag.includes(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).select("tags.*").group('tags.slug').order('tags.articles_count DESC')
但是,将忽略特定的SELECT。
使用MySQL时,它从未中断过。 有人可以告诉我我在做什么错吗?
所以我相信我已经以合适的方式解决了我的问题。 基本上,我摆脱了包含和组。 相反,我使用联接并选择了不同的列。 如果有人遇到这些问题,以下是我的最终查询:
@article_tags = ArticleTag.select("DISTINCT (tags.slug), tags.articles_count").joins(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).order('tags.articles_count DESC')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.