我知道在SO上有很多这样的线程,但我仍然无法弄清楚我的代码有什么问题。我的模特是:
class User < ActiveRecord::Base
has_many :events
end
class Event < ActiveRecord::Base
belongs_to :user
belongs_to :venue
end
class Venue < ActiveRecord::Base
has_many :events
end
我想要做的是获取用户使用的所有近期场所(通过他创建的事件)。我的主动记录是:
User
.first
.events
.joins(:venue)
.select('venues.id, venues.name, venues.address, events.beginning_at')
.uniq('venues.id')
并生成以下查询:
SELECT DISTINCT(venues.id), venues.name, venues.address, events.beginning_at
FROM "events" INNER JOIN "venues" ON "venues"."id" = "events"."venue_id"
WHERE "events"."user_id" = $1
ORDER BY "events"."beginning_at" ASC [["user_id", 1]]
然而,它给我的是一个非常随机的&#34;最近使用过的场地名单。 ATM将所有事件分配到同一地点,上面的查询为我提供了所有这些场所(因此它下降到一个场地乘以用户创建的所有事件的数量)。更有趣的是 - 该查询给了我9个结果但是当我删除DISTINCT方法时,我得到20个结果(而我的数据库中只有一个地点)
你能否给我一些关于我做错的提示?