mysql - 在这种多对多关系中查询项目的有效方法是什么? ( rails )

标签 mysql ruby-on-rails postgresql

我正在尝试寻找是否有一种使用 Rails/AR 查询我的数据库的有效方法。我是新手,所以感谢您提供任何提示。

我正在尝试查询属于特定类别的所有项目。当用户转到/categories/5 时,他们应该看到类别 5 中的所有项目。

模型:

  • 项目
  • 标签 (又名 Items_Categories)
  • 类别

标签是连接表。我成功查询了来自该类别的所有标签。我只是不确定如何查询这些标签中的所有项目。换句话说,我已经到达连接表,只是不确定如何连接到另一端。

标签架构:

  • 编号
  • 类别编号
  • item_id

这是我的 Controller 到目前为止的内容:

 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

最佳答案

尝试提取 ActiveRelation 对象来检索数组,如下所示: categoryItems = categoryLabels.pluck(:item_id) # [22, 17, 50]

关于mysql - 在这种多对多关系中查询项目的有效方法是什么? ( rails ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506395/

相关文章:

Python/Psycopg2/PostgreSQL Copy_From 循环在进行时变慢

mysql 索引键太多

mysql - 连接后另一个表的第二低值

mysql - 在C中将mysql数据库查询存储为变量

javascript - 如何使用 Rails Each Array 和页内搜索来显示/隐藏 div 内容

ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素

php - 如何在MySql DATETIME查询中添加#from和#to?

ruby-on-rails - Ruby Net::HTTP::Get 和 JSON 响应

postgresql - 有没有办法将两个 Postgres 表视为一个表?

postgresql - 使用 limit 和 order by 优化选择查询