RailsCasts #004 Move Find into Model 【把find方法封裝進Model】

RailsCasts中的視頻講的內(nèi)容總結(jié)成文章,每個視頻對應(yīng)一片文章,希望可以幫助到那些想要學(xué)習(xí)RailsCasts 但又被英文阻礙的同學(xué)。

把find方法封裝進Model

我們有一個模型Task, 我們要查詢所有未完成的任務(wù)可以這樣寫

class TaskController < ApplicationController
  def index
    @tasks = Task.find_all_by_complete(:false, :order => "created_at DESC")
  end
end

可是如果有很多地方需要進行這種查詢的話,就需要吧這段查詢代碼拷貝到不同的地方,下面我們這段業(yè)務(wù)相關(guān)的查詢封裝進Task模型文件里

class Task < ActiveRecord::Base
  belongs_to :project

  def self.find_incomplete
    find_all_by_complete(:false, :order => "created_at DESC")
  end
end

在不同的地方要完成同樣的查詢就可以改為下面的寫法

Task.find_incomplete

更方便的是,我們也可以在關(guān)聯(lián)查詢的結(jié)果上調(diào)用上面的方法

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

總結(jié)

上面的例子展示了把業(yè)務(wù)邏輯封裝入模型文件的做法,無論是查詢還是修改,把業(yè)務(wù)邏輯封裝放進數(shù)據(jù)模型,都是一種好的實踐,不但可以精簡代碼,提高復(fù)用率,也有利于業(yè)務(wù)的解耦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容