【发布时间】:2011-03-03 05:31:26
【问题描述】:
在 Active Record 中是否有一种方法可以构造单个查询来对多个主键进行条件连接?
假设我有以下模型:
Class Athlete < ActiveRecord::Base
has_many :workouts
end
Class Workout < ActiveRecord::Base
belongs_to :athlete
named_scope :run, :conditions => {:type => "run"}
named_scope :best, :order => "time", :limit => 1
end
这样,我可以生成一个查询来为运动员获取最佳跑步时间:
Athlete.find(1).workouts.run.best
如何使用单个查询为组中的每个运动员获得最佳跑步时间?
以下方法不起作用,因为它只将命名范围应用于整个数组一次,返回所有运动员的最佳时间:
Athlete.find([1,2,3]).workouts.run.best
以下作品。但是,它无法针对大量运动员进行扩展,因为它会为每个运动员生成单独的查询:
[1,2,3].collect {|id| Athlete.find(id).workouts.run.best}
有没有办法使用 Active Record 查询界面和关联生成单个查询?
如果没有,谁能推荐一个我可以用于 find_by_SQL 的 SQL 查询模式?我必须承认我在 SQL 方面不是很擅长,但如果有人能指出我正确的方向,我可能会弄清楚。
【问题讨论】:
标签: mysql ruby-on-rails activerecord