有 3 个模型log
(属于客户),customer
并且project
在rails 3.2
应用程序中。两者customer
都有project
场sales_id
。这是我们要执行的查询:
为客户返回以下日志 1) sales_id 等于 session[:user_id] 的客户的日志和 2) 项目的 sales_id 等于 session[:user_id] 的客户的日志
1) 的 rails 查询可能是:
Log.joins(:customer).where(:customers => {:sales_id => session[:user_id]})
Rails 查询 2) 可能是:
Log.joins(:customer => :projects).where(:projects => {:sales_id => session[:user_id})
结合上面的查询,它是正确的方法吗?
Log.joins([:customer, {:customer => :projects}]).where('customers.sales_id = id OR projects.sales_id = id', id: session[:user_id])
http://guides.rubyonrails.org/v3.2.13/active_record_querying.html中的第 11.2.4 章讨论了一个有趣的查询案例。我们还没有测试上面的查询。我们想知道上面的联合查询是否确实正确。