Echo nil > me

Bleach me and begin again

Use Include for Querying to Optimize

| Comments

今天写项目,然后参考ruby-china的一部分代码的时候,看到一个include的用法,不知道是怎么回事,因为它是用mongodb的,所以也一时找不到ActiveRecord中的用法。

不过刚刚在看railscasts的时候,突然就看到了这种用法:

比如说TaskProject是多对一的关系

在index的页面需要用到Task和它belongs_to的那个Project,这样的话,看log里,会发现,查找了Project了很多次。

那么就能用@tasks = Task.find(:all, :include => :project)来查到和project关联的task,这样的话可以把相关联的对象也先读取出来。

那么有什么结果呢?

在console的log里就看得很清楚了,载入页面之后,两次查询就够了。

我自己去写的时候,find方法不起作用,不知道是因为这是以前的写法还是怎样。 就看到实战圣经上有说这个的,原来是includes方法,比如:

1
@events = Event.includes(:user).order('start_date DESC').page(params[:page])

这样就能查询到最近的event,并把对应的user包含进去,再进行分页了。顿时感觉世界好美好的有木有!! 哈哈~

Comments