gpt4 book ai didi

ruby-on-rails - 查找具有所有关联记录的记录

转载 作者:行者123 更新时间:2023-12-04 05:49:14 26 4
gpt4 key购买 nike

说,

我们有一个“Person”和“Favorite”模型。

“最喜欢”是这个人喜欢的东西:“音乐”、“视频”、“运动”、“互联网”、“旅游”等。

“人物”HABTM“收藏夹”和“收藏夹”HABTM“人物”

我需要找到一个人,其中列出了所有“收藏夹”。例如,找到一个喜欢“音乐”、“旅行”和“运动”的人。

如何使用 ActiveRecord.find 方法完成?

最佳答案

@people = Person.find(:all, 
:joins => :favourites,
:select => "person.*, count(favourites) favourite_count",
:conditions => {:favourites => @array_of_favourites},
:group => "persons.id having favourite_count = #{@array_of_favourites.count}")

您需要类似这样的东西来找到拥有所有 收藏的人,而不是任何 收藏的组合。这是基于这样的假设,即您有一组最喜欢的对象,而不是一组字符串。

Rails 4 兼容解决方案:

@people = Person.joins(:favourites)
.where(favourites: { id: @array_of_favourites })
.group("people.id")
.having("count(favourites.id) = #{@array_of_favourites.count}")

关于ruby-on-rails - 查找具有所有关联记录的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3416451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com