rails model associations - oyaji's Blog
rails model associations
oyaji
posted @ 2011年1月29日 02:29
in rails
with tags
rails model associations
, 1518 阅读
Rails中ActiveRecord finders不允许我们在include预加载关联对象时使用select。
例如这样的情况:
class Student < ActiveRecord::Base has_many :calls has_one :call end class Call < ActiveRecord::Base belongs_to :student end
希望在显示student时,显示它的最近更新的call的日期。
改善前:
@students = Student.all(:include => [:call])
改善后:
#include eql left outer join @students = Student.all(:select => "students.id, students.login, students.called_times, calls.updated_at as last_called_at", :joins => "left outer join calls on students.id = calls.student_id")
前几天在rails performance turning中发现:
跨数据库的应用中在model层指定associations,以及用include实现的提前装载,
和through实现的多表关联,都不起作用。
但奇怪的是在console中却能正常的取到值。。。求解
2011年1月29日 02:57
有必要试试手工 left outer join 的方式
2011年1月29日 02:58
不行,如果是跨数据库的话,手工left outer join的方式,其结果是在数据库中不存在这个表。。。