| 模型的Rails的find(x)方法是惰性的吗?如果不是,那是什么等价? 我是Rails的新手,所以发现自己正在编写如下范围:
class Course < ActiveRecord::Base
  scope :by_instructor_id, lambda { |instructor_id| where(:instructor_id => instructor_id) }
  scope :by_course_template_id, lambda { |course_template_id| where(:course_template_id => course_template_id ) }
  scope :by_company_id, lambda { |company_id| joins(:instructor).merge(www.sxzhongrui.com_company_id(company_id)) }
end
它的工作量不大,但是现在我要问自己...如果Rails为它们提供了作用域,则不必编写它们。 那么,Rails提供它们吗?我可以执行以下代码,仅使其执行1次数据库调用吗?
Company.find(params[:id]).instructors.courses
代替
www.sxzhongrui.com_company_id(params[:id])
哪个是对的?我知道
www.sxzhongrui.com_company_id(params[:id])
只是1个数据库调用。在Hibernate中编写SQL或查询非常熟悉。但是,如果您可以用其他方式写它,也许应该? 但是,如果导致超过1个数据库调用,我不想写
Company.find(params[:id]).instructors.courses
。我可以看到优点,因为它意味着不必编写上面显示的3个作用域,但是我担心
Company.find(x)
不会偷懒。是吗?