动态条件下的急切负载

时间:2012-03-03 21:10:13

标签: ruby-on-rails

是否可以使用动态条件执行急切加载?更具体地说:

u_id = params[:user_id]
Container.includes(:items).where("items.user_id =?", u_id)

这显然没有给我所有容器,但只包含某个user_id的项目,因为它将where条件应用于整个查询,而不仅仅是:items,但有没有办法使用ARel完成此任务,还是需要自定义SQL查询?

1 个答案:

答案 0 :(得分:0)

只需在查询中致电scoped

Container.where("items.user_id =?", u_id).includes(:items).scoped

这将返回Arel对象而不是数据库查询。

Rails Console中试用,您可以看到创建的Arel对象与不使用scoped时运行的对象相比。