scope 是什么?怎么用?

scope用来包装“常用query”的方法,将时常使用或是复杂的ORM语法组合到一起。 例如scope :recent, -> { order("created_at DESC") } 这里我们就定义了recent这个scope, 相当于recent这个指令等于order("created_at DESC")

什么情况下使用? 1.当有过于复杂的资料查询 2.单钩重复使用的资料查询

没有带参数的方式 ` scope :published, -> { where(published: true) }`

有带参数的方式 scope :created_before, ->(time) { where("created_at < ?", time) }

可以串接在一起,顺序没有影响

scope :published, -> { where(published: true) }
scope :created_before, ->(time) { where("created_at < ?", time) }