`
Hooopo
  • 浏览: 328965 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Find Through Association

阅读更多
Project model  has_many tasks:
class Project < ActiveRecord::Base  
    has_many :tasks  
end

a Task model  belongs_to a project
class Task < ActiveRecord::Base  
    belongs_to :project  
end  

用project控制器的show方法,显示所有未完成tasks:
class ProjectsController < ApplicationController  
    def show  
        @project = Project.find(params[:id])  
        @tasks = Task.find(:all, :conditions => ['project_id = ? AND complete = ?', @project.id, false])  
    end  
end  

通过model之间的关联去实现是一种更好的方式:
class ProjectsController < ApplicationController  
    def show  
        @project = Project.find(params[:id])  
        @tasks = @project.tasks.find(:all, :conditions => [complete = ?', false])   
    end  
end  



额,显然,前面介绍过优雅的find_by方法:

class ProjectsController < ApplicationController  
    def show  
        @project = Project.find(params[:id])  
       @tasks = @project.tasks.find_all_by_complete(false)    
    end  
end 



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics