在我目前正在进行的项目中,我有以下模型:
Guest
name: string
Episode
title: string
description: string
Appearance
guest_id: integer
episode_id: integer
如您所见,客人通过外观表出现在多集中。当我检索剧集时,目前通过RSS ..我想找到一种方法来检查Guest表的任何成员的标题和描述。如果找到匹配,则会建立关联。
通常情况下,如果客人数量较少,这将非常容易,但迭代整个客人集合并检查剧集的标题和说明字段似乎很浪费。
我可以看到这是一个“已解决的问题”,但我遇到了一个问题,即找到一个解决方案,考虑到大量客人的扩展影响或越来越多的搜索属性(例如添加更多)字段到Episode模型检查)。
非常感谢任何帮助。
答案 0 :(得分:0)
假设您正确配置了关系:
descriptions = rss_items.map {|i| i.description}
Guest.includes(:episodes)
.where(Episode.arel_table[:description].in(descriptions))
Guest
有has_many :episodes, through: :appearances
和has_many :appearances
的位置。