【发布时间】:2009-08-29 17:30:25
【问题描述】:
我对 Rails 并不陌生,但到目前为止我还没有做过如此复杂的事情,所以我很好奇更有经验的 Rails 开发人员可能会分享什么:
我有一个 sql 查询,它将 4 个左右的表连接到一个输出中:
SELECT places.id, places.name, places.email, places.website, places.blurb, external_ratings.rating, photos.data_file_name
FROM `scannables`
INNER JOIN places ON scannables.place_id = places.id
INNER JOIN locations ON places.location_id = locations.id
LEFT JOIN external_ratings ON scannables.place_id = external_ratings.place_id
LEFT JOIN photos ON scannables.place_id = photos.place_id
WHERE locations.id = 2474 AND scannables.bookdate BETWEEN '2009-08-29' and date_add('2009-08-29', INTERVAL 4 DAY)
GROUP BY scannables.place_id
HAVING SUM(scannables.available) >= 4
ORDER BY SUM(scannables.available) DESC, external_ratings.rating DESC
我在各种模型中定义了所有表关系,最初只使用这些定义的关系(使用活动记录)提取各种数据,它工作正常,除了最大的主查询非常慢,执行多重独立查询。我的问题是,我应该在这种情况下转储 Active Record 并使用 find_by_sql... 还是我遗漏了什么?
什么是 Rails 方式?
谢谢
【问题讨论】:
标签: sql ruby-on-rails ruby activerecord