Icono del sitio Blog de Programación y Desarrollo – Nube Colectiva

Como usar Scopes en Ruby on Rails

Ruby on Rails es un genial framework, cuenta con muchas alternativas, herramientas, utilidades, etc. que ayudan al desarrollador a ser más productivo, una de estas alternativas son los Scopes que traducido al español significa Ámbitos o Alcances y en este Post vamos a conocer más acerca de esta importante alternativa en Ruby on Rails.

Antes de continuar, te invito a leer los siguientes artículos:

Si ya lo conoces o eres usuario avanzado de Ruby on Rails, puedes continuar, no hay problema.

Asimismo te invito a escuchar el Podcast: “Donde buscar ayuda sobre Programación”:

Spotify SoundCloud

Bien ahora continuemos con el Post: Como usar Scopes en Ruby on Rails.

Los Scopes en Ruby on Rails son consultas personalizadas que el Desarrollador define dentro de sus modelos con el método scope.

Usando Scopes en Ruby on Rails

Cada Scope toma 2 argumentos, un nombre que utiliza para llamar a este Scope en el código y un lambda que implementa la consulta.


Como resultado de llamar a un scope, se obtiene un objeto ActiveRecord::Relation, por ende podemos encadenar y combinar scopes.


Hemos combinado el scope stock y en_oferta, aún podemos aprender más cosas sobre los scopes en Ruby on Rails.

Cuando debemos usar los Scopes ?

Los scopes son interesantes y tienen un uso particular, veamos a continuación el siguiente ejemplo:


En el código anterior tenemos una acción index en un controlador que intenta mostrar productos con un nombre de más de 15 caracteres.

Pero si deseas usar esta consulta en otro lugar, puede que tengas que duplicar el código, por ende tendrás código repetitivo, entonces veamos como hacer esta consulta usando un scope, veamos el siguiente ejemplo:


Ahora nuestra acción en el controlador se ve de la siguiente manera:


Hacemos uso del scope con_nombre_largo, entonces podemos hace uso de Scopes para evitar tener que escribir todo el código, así evitamos duplicar el código.

Usando Scopes con Argumentos

Si deseas pasar una variable que podría ser un argumento a un Scope puedes hacerlo de la siguiente manera:


En el código anterior el signo de interrogación ‘?‘ es un marcador de posición, se reemplazará por el valor de length.

Y si deseas usar un valor predeterminado, puedes hacerlo de la siguiente manera:


En el código anterior he definido 15 como el valor predeterminado.

Conclusión

En este Post hemos aprendido a usar los scopes en Ruby on Rails y los llegarás a dominar conforme los pongas en práctica en tus proyectos.

Nota(s)

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.

Salir de la versión móvil