我目前有3个表和3个连接表
用户 项目 材料
用户有许多项目和材料
项目有很多用户和材料
材料有很多项目和用户
他们每个人都有各自的联接表
说材料有一个列"名称"和"金额"。我如何形成关联,以便对于相同的材料实例,它对项目和用户具有不同的数量?
我目前正在存储"金额"在他们的连接表中,因此UserMaterial和ProjectMaterial具有不同的"金额"。问题是当我从用户查询材料时,我将不得不进行2次单独的查询。一个从Materials表中获取Material名称的数组,
user.materials
和另一个从UserMaterial获取数量的数组。
user.usermaterials
我的协会有问题/改善吗?或者是否有一个查询方法来组合这两个数组,将正确的名称和数量附加到正确的ID?
感谢任何帮助。谢谢
答案 0 :(得分:0)
如果您在user.materials上查询,则必须通过user_materials加入。如果您使用includes
,则可以在一个查询中同时获取。
user_materials = @user.user_materials.includes(:material)
然后,当你循环时,user_material.material关联将已经加载并为你做好准备。
user_materials.each do |um|
name = um.material.name # material is already loaded
end