0

我的协会

class Website < ApplicationRecord
  has_many :settings
  has_one :shop
end

设置和商店表值是:

2.6.1 :003 > Setting.all.pluck(:records)
=> [2, 2, 4, 0, 0, 0]

2.6.1 :003 > Shop.all.pluck(:records)
=> [4, 1, 1] 

使用连接

Website.joins(:settings, :shop).where("websites.id = ?", 2).pluck("settings.records", "shops.records")

我得到了重复的价值

[[2, 4], [2, 1], [2, 1], [2, 4], [2, 1], [2, 1], [4, 4], [4, 1], [4, 1], [0, 4], [0, 1], [0, 1], [0, 4], [0, 1], [0, 1], [0, 4], [0, 1], [0, 1]]

我想要的结果

[[2, 4], [2, 1], [4, 1], [0, 0], [0, 0], [0, 0]]

我该如何解决这个问题?

提前致谢 :)

4

1 回答 1

0

我不确定您为什么期望结果是[[2, 4], [2, 1], [4, 1], [0, 0], [0, 0], [0, 0]](可能是错字?),但是如果您想从联接查询中获取非重复结果,可以使用group+ distinct

Website.joins(:settings, :shop).where("websites.id = ?", 2).group("settings.records", "shops.records").distinct.pluck("settings.records", "shops.records")
=> [[0, 1], [0, 4], [2, 1], [2, 4], [4, 1], [4, 4]]
于 2020-02-29T00:49:05.460 回答