我正在尝试查找是否有一种使用Rails / AR查询我的数据库的有效方法。我有点新,所以感谢任何提示。
我正在尝试查询属于特定类别的所有项目。当用户转到/ categories / 5时,他们应该看到类别5中的所有项目。
模特:
Label是连接表。我成功查询了所有类别的标签。我只是不确定如何查询这些标签中的所有项目。换句话说,我已经进入了连接表,只是不确定如何桥接到另一边。
标签架构:
这是我的控制器到目前为止的内容:
categoryLabels = Label.where(category_id: params[:id])
categoryItems = ???
render json: categoryItems
这是我正在查看的查询示例,试图决定如何获取类别为5的项目。我想“提取”给定的每个项目的(数组?)类别。我很想循环使用categoryLabels,但我不确定这是否正确/有效。
select * from labels;
id | category_id | item_id
1 5 22
2 5 17
3 2 50
答案 0 :(得分:2)
尝试使用ActiveRelation对象来检索数组,如下所示:
categoryItems = categoryLabels.pluck(:item_id) # [22, 17, 50]
答案 1 :(得分:1)
假设Item table
为
<强> 产品(ITEM_ID,ITEM_ID) 强>
SELECT Items.`item_name`
FROM
Labels INNER JOIN Items.`item_id` = Labels.`item_id`
WHERE Labels.category_id=5
希望这有帮助。
答案 2 :(得分:1)
如果Label不包含其他字段,则控制器中不需要它。 试试这个:
category = Category.find(params[:id]) # get category
items = category.items # get items
render json: items
在此处详细了解多对多方法http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association