在我的应用程序中,用户可以创建他们的作品可能在也可能不在的画廊。用户拥有并属于许多画廊,每个画廊都有一个由画廊user_id
字段指定的“创建者”。
因此,要获取用户所在的 5 个最新画廊,我可以执行以下操作:
included_in = @user.galleries.order('created_at DESC').uniq.first(5)
# SELECT DISTINCT "galleries".* FROM "galleries" INNER JOIN "galleries_users" ON "galleries"."id" = "galleries_users"."gallery_id" WHERE "galleries_users"."user_id" = 10 ORDER BY created_at DESC LIMIT 5
并获得他们创建的 5 个最新画廊,我可以这样做:
created = Gallery.where(user_id: id).order('created_at DESC').uniq.first(5)
# SELECT DISTINCT "galleries".* FROM "galleries" WHERE "galleries"."user_id" = 10 ORDER BY created_at DESC LIMIT 5
我想将这两个显示在一起,以便它们是他们创建的 5 个最新画廊或他们所在的画廊。类似于:
(included_in + created).order('created_at DESC').uniq.first(5)
有谁知道如何构建一个有效的查询或查询后循环来做到这一点?