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)

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

推荐阅读更多精彩内容

  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,478评论 0 23
  • 在日常语言建设的敏感期,儿童模仿口语,练习口语,感觉语言的音韵,并不断重复使用语言,在使用中把语言内化。家长和老师...
    万花谷阅读 4,090评论 0 0
  • 明信片有时间聊
    Worn阅读 1,189评论 0 0
  • 昨晚老公又在外面吃的饭,他一在外吃饭我就心情不好,昨晚孩子又闹,都不让我哄着睡觉,总是哭啊哭,其实我也想让孩子和她...
    爱生活_爱小懒阅读 1,261评论 0 0
  • 侄子比我大三岁。 我在家辈分高,叫我小姨的,都比我大。 侄子有一个女朋友,从初中毕业后就开始谈恋爱。 从最初的忸怩...
    关茜妹妹阅读 1,872评论 0 3