【发布时间】:2015-01-13 22:43:07
【问题描述】:
Railscasts #4 使用此示例代码:
class Task < ActiveRecord::Base
belongs_to :project
def self.find_incomplete
find_all_by_complete(:false, :order => "created_at DESC")
end
end
class ProjectsController < ApplicationController
def show
@project = Project.find(params[:id])
@tasks = @project.tasks.find_incomplete
end
end
使用@project.tasks.find_incomplete,仅查找属于该特定Project 实例的不完整订单。
我希望该调用等同于Task.find_incomplete,但事实并非如此。怎么可能? Rails(或 Ruby)现在如何在 Project 实例中为那些特定的 Tasks 调用该方法?
【问题讨论】:
-
ActiveRecord自动为您完成。 -
@ptd,你能解释一下它是如何在幕后工作的吗?
-
最好的方法是查看代码。通过查看 ActiveRecord 之类的东西,您会发现更多关于 ruby 的描述能力的信息。
标签: ruby-on-rails ruby railscasts class-method