visual studio microsoft español descargar community ruby-on-rails activerecord rspec scope activemodel

ruby on rails - studio - ¿Ámbitos compartidos a través del módulo?



visual studio installer (3)

Como en la sintaxis del alcance de los rieles 4, simplemente puede usar un lambda para retrasar la ejecución del código (también funciona en los rieles 3):

module CommonScopes extend ActiveSupport::Concern included do scope :ordered_for_display, -> { order("#{self.to_s.tableize}.rank asc") } end end

Quiero secar varios modelos moviendo ámbitos compartidos en un módulo, algo como:

module CommonScopes extend ActiveSupport::Concern module ClassMethods scope :ordered_for_display, order("#{self.to_s.tableize}.rank asc") end end

También quiero crear especificaciones compartidas que prueben el módulo. Desafortunadamente, cuando intento incluir el alcance compartido en mi modelo, obtengo:

undefined method `order'' for CommonScopes::ClassMethods:Module

¿Algunas ideas? ¡Gracias!


Debido a que se llama a su método de scope inmediatamente cuando Ruby analiza su módulo y no se puede acceder a él desde su módulo CommonScopes ...

Pero puedes reemplazar tu llamada de alcance por un método de clase:

module CommonScopes extend ActiveSupport::Concern module ClassMethods def ordered_for_display order("#{self.to_s.tableize}.rank asc") end end end


Puedes usar instance_eval

module CommonScopes extend ActiveSupport::Concern def self.included(klass) klass.instance_eval do scope :ordered_for_display, order("#{self.to_s.tableize}.rank asc") end end end