Find Through Association 使用级联查询

class Project < ActiveRecord::Base
    has_many :tasks
end

这段代码的意思是有一个Project类,通过has_many方法定义他有多个tasks


class Task < ActiveRecord::Base
     belongs_to :project
end

这段代码的意思是有一个Task类,通过belongs_to定义它属于一个Project


class ProjectsController < ApplicationController
      def show
             @project = Project.find(params[:id])
             @tasks = Task.find(:all, :conditions => ['project_id = ? AND complete = ?', @project.id, false])
end
end

通过ProjectController中的show方法,返回一个项目或者其包含的未完成的项目。可以将代码进一步优化如下为

@tasks=@project.tasks.find(:all, :conditions=>[complete=?',false])

还可以进一步优化成

@tasks=@project.tasks.find_all_by_complete(false)

 

 
posted @ 2015-10-12 01:53  Jacky_Kun  阅读(144)  评论(0编辑  收藏  举报