model-scope

scope

scope 的作用就是將時常使用或是複雜的ORM語法組合成懶人包,這樣下次要用的時候只要把懶人包拿出來就可以了,舉例說明:

class Topic < ActiveRecord::Base scope :recent, -> { order("created_at DESC") } end

上面這段code我們定義了recent

這個scope,以後我們只要下recent

這個指令就等於下order("created_at DESC")

是一樣的。如此一來就可以讓程式碼更為簡潔。

使用情境

當有過於複雜的資料查詢

當有重覆使用的資料查詢

使用方式

沒帶參數的方式

class Post < ActiveRecord::Base scope :published, -> { where(published: true) }end

帶有參數的方式

class Post < ActiveRecord::Base scope :created_before, ->(time) { where("created_at < ?", time) } end

可以串接在一起,順序沒有影響

class Event < ActiveRecord::Base scope :published, -> { where(published: true) } scope :created_before, ->(time) { where("created_at < ?", time) } end

Event.published.created_before(Time.now)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • scopescope 的作用就是將時常使用或是複雜的ORM語法組合成懶人包,這樣下次要用的時候只要把懶人包拿出來就...
    栋栋晓阅读 4,451评论 0 1
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,151评论 0 10
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,454评论 0 23
  • 离大年夜就剩五天了,一年又结束了。你是不是奔波了一整年,准备好好过年了? 临近年关,这段时间是不是也在忙着工作上的...
    Sarah王阅读 1,371评论 0 0
  • 看着没有尽头的天空,藏着年华恍如梦… 看到是谁的言不由衷,谁在勾画看似温热的冰冷 我会为你撑起雨天的一把伞,每天每...
    知秋業阅读 760评论 0 1