我完全陷入了这个问题,我疑问找不到任何答案。
我会尽力解释的方式,但这很难。
因此,我有第一个型号(食谱(,该模型将列成分存储在数组中的所有成分中。我还有一个成分模型,该模型是通过联接表连接到食谱的,这是第一列的所有可用成分的名称。
我想在我的搜索方法中包含一个将成分的查询。名称列转换为一个数组,然后从搜索方法中返回仅在成分中完全包含成分成分的食谱。
我尝试了这个
recipes = recipes.joins(:ingrediantizations).where('array_agg('ingredients.name') @> recipe.ingredients')
,但它没有给出正确的恢复 - Ingrediantization是联接表。
希望您能帮助我!
几天将我的头缠绕在此之后,我终于找到了解决方案。
我发布它,以便有人可以从中受益。
第二步似乎很奇怪,但我想,这是用psql中的字面数组所需的卷曲括号制作数组的唯一方法。
成分是将成分存储在数组中的属性。
items = Item.pluck(:name)
items = "{#{ items.map {|term| %Q("#{ term }") }.join(",") }}"
recipes=recipes.where("ingredients <@?", "#{items}")