ruby on rails llamado implementación de alcance

Del libro Desarrollo web ágil con rieles

class Order < ActiveRecord::Base
   named_scope :last_n_days, lambda { |days| {:conditions =>
      ['updated < ?' , days] } }

   named_scope :checks, :conditions => {:pay_type => :check}
end

La declaración

orders = Orders.checks.last_n_days(7)

resultará en una sola consulta a la base de datos.

¿Cómo implementa esto los rieles? Soy nuevo en Ruby y me pregunto si hay una construcción especial que permita que esto suceda.

Para poder encadenar métodos como ese, las funciones generadas por named_scope deben devolverse a sí mismas o a un objeto que se pueda ampliar aún más. Pero, ¿cómo sabe Ruby que es la última llamada a la función y que debería consultar la base de datos ahora?

Pregunto esto porque la declaración anterior realmente consulta la base de datos y no solo devuelve una declaración SQL que resulta del encadenamiento.

Respuestas a la pregunta(3)

Su respuesta a la pregunta