Rails连接返回看似正确的SQL,但返回错误的结果

Rails连接返回看似正确的SQL,但返回错误的结果,sql,ruby-on-rails,activerecord,join,inner-join,Sql,Ruby On Rails,Activerecord,Join,Inner Join,我的设置有出版物、草稿和实时版本。出版物具有多态性,因为可以起草许多不同类型的对象 # Publication.all Publication id: 1, publishable_id: 2, publishable_type: "Foo", original_id: 1, original_type: "Foo" # published scope on Foo select('*, MAX(publications.created_at)'). joins(

我的设置有出版物、草稿和实时版本。出版物具有多态性,因为可以起草许多不同类型的对象

# Publication.all
Publication id: 1, publishable_id: 2, publishable_type: "Foo", 
            original_id: 1, original_type: "Foo"

# published scope on Foo
select('*, MAX(publications.created_at)').
  joins(:publications).
  group('publications.original_id')

# Foo.published.all
[<Foo id: 1, ...>]
因为只有一个发布的可发布_id为2,所以我希望这个查询返回第二个Foo。但是当我在Foo上调用发布的作用域时,我得到的是第一个。这怎么可能?我认为内部联接会将结果限制在满足联接条件的地方?我是如何得到与我所寻找的完全相反的东西的

有趣的是:仅执行联接即可返回正确的结果:

self.class.unscoped.joins(:publications)

但是,上面显示的已发布范围返回的结果不正确。查询的SELECT或GROUP BY部分是否发生了导致此问题的情况?

因为只有一个发布,那么为什么要使用GROUP BY?虽然GROUPBY不考虑更改查询结果的数量,但只考虑更改行顺序。选择会影响结果。
self.class.unscoped.joins(:publications)