我有一个Step模型和一个Images模型;步骤与图像之间的关联是图像属于一个步骤,而步骤具有许多图像。我想查询哪些步骤返回具有多个图像的所有步骤。我将如何在轨道控制台中执行此操作?通过关联查询
我已经试过如下:
Step.where("images > ? ", 1)
Step.joins(:images).where("image.count > 1")
也不工作。
非常感谢!
我有一个Step模型和一个Images模型;步骤与图像之间的关联是图像属于一个步骤,而步骤具有许多图像。我想查询哪些步骤返回具有多个图像的所有步骤。我将如何在轨道控制台中执行此操作?通过关联查询
我已经试过如下:
Step.where("images > ? ", 1)
Step.joins(:images).where("image.count > 1")
也不工作。
非常感谢!
我可以给你从我的应用程序similiar查询,这样你就锻炼; Tibial你的大脑一点;)
Activity.joins(:slots).group('activities.id').having('COUNT(activity_id) > 1')
好吧,你应该做的
Step(:images).group('steps.id').having('COUNT(images.step_id) > 1')
这也正是我的例子,但与改变了模型名称。
也许这样的事情?:
Step.find(:all,
select: "steps.*, count(images.id) as image_count",
joins: :images,
having: "image_count > 1",
group => 'images.step_id')
感谢您的帮助。我收到错误“column image_count does not exist”我也将示例代码的最后一行更改为group:'images.step_id' – scientiffic
尝试删除select属性(或将你想要的列添加到字符串中)并使用'having:“count(images.id)> 1”' – NicoSantangelo
还可以阅读一些有关SQL和关系型数据库,因为我看到你设法在那里申请对象模型的逻辑。 –
感谢您的帮助。我没有看到您的查询中如何使用插槽? – scientiffic
啊,他们不是。固定。 –