Access denied, Please sign in and make sure you have proper permission.
看了一下,貌似确实有问题啊
@project.tasks
应该是 task 的数组吧,应该是不能用find_incomplete
方法的
挖坟啊,那个时候的 association 返回的是啥?现在都用 scope 了,别纠结了。
以后别随便说类方法,容易误解,你那个 find_incomplete 是怎么定义的,是不是类似这样:
class Task < ActiveRecord::Base
scope :find_incomplete, ......
end
#4 楼 @fsword
class Task < ActiveRecord::Base
def self.find_incomplete
......
end
end
#5 楼 @xiaoronglv 这个怎么会被看作“类方法”呢?而且真要这么写的话@task = @project.tasks.find_incomplete
会失败的吧
@blueplanet @fsword find_incomplete 不会出错的啊 @project.tasks 在控制台下确实是数组 但实际上是 Relation .tasks .find_incomplete 调用的都是 sql 语句,至于为什么可以连用,是因为返回的是 AR::Relation,scope 能够连续调用(chaining)和 lazy evaluation 都是因为 AR::Relation 的原因 前不久看过一篇 ROR 的博客写的就是 activerecord 3 的改进,现在我记不得地址了,不过到 speakerdeck.com 去搜 activerecord 可以找到这方面的资料,为了确定我所说的我也建了 demo 试了一下。
@blueplanet self.find_incomplete 确实是类方法,但是重点是在方法里面的代码啊
Rails c 下,Task.find_incomplete 也是可以调用的
#6 楼 @fsword sorry,原代码中有 self,我漏了。。。。
冏。
已经修改了帖子。
灰常抱歉。
#7 楼 @dfang 原来如此。我只是单独写了个类跑了一下,场景完全不对啊。应该继承ActiveRecord
跑一下的。