Menú principal

Blog de ApuX

12 May

Buscar y reemplazar cadenas en Ruby (I)

Published by ApuX

Mostraré cómo sustituir parte de una cadena por otra en Ruby.
Primero, supongamos una cadena con el siguiente contenido.

str = "Juan Martínez gastó $20.00 en comida china"

Ahora, supongamos que queremos cambiar la letra c (minúscula) por C (mayúscula). Esto lo podemos hacer con el método sub.

06 May

Obtener el valor de una serie de elementos HTML con JQuery

Published by ApuX

Hace poco me encontré con un problema de fácil solución pero que a mí me costó cierto trabajo. El escenario es el siguiente: Se tiene una lista de elmentos html, digamos, campos de texto. Se requiere obtener el valor de cada uno de esos campos de texto para procesarlos posteriormente. El lenguaje: coffeescript, usando jQuery.

Primero, el html que tiene los campos de texto:

05 Mar

Rutas relativas en Ruby

Published by ApuX

Abrir un archivo en ruby es muy sencillo por medio de la clase File:

06 Feb

Convertir un arreglo en Ruby en una hoja de cálculo

Published by ApuX

to_xls es una excelente gema para generar archivos de excel a partir un arreglo en ruby. Se integra muy bien a Rails, permitiendo arreglos de modelos, y despachándolos directamente por medio del formato xls.
Para esto, se debe incluir la siguiente línea en el archivo config/initializers/mime_types.rb

30 Jan

Stores en Rails 3.2

Published by ApuX

Rails 3.2 introduce una nueva característica: los stores. Es una forma de agrupar varios atributos en un sólo campo de la base de datos. Pongamos un ejemplo:
Se necesita almacenar información de contribuyentes, como el nombre y el tipo (persona física o moral). La información a almacenar es diferente si se trata de una persona física o una persona moral, para una persona física se necesita el nombre, apellido paterno y apellido materno; para una persona moral se necesita la razón social. Para esto, podemos crear el siguiente modelo:

23 Jan

Algunas novedades de Rails 3.2

Published by ApuX

Acaba de liberarse Rails 3.2, y estos son algunos de los cambios sencillos pero interesantes que trae:
El scaffold permite especificar 'index' y 'uniq' para los campos que los requieran. Ejemplo:

rails g scaffold user name:string:uniq

Otro cambio bastante útil es que las columnas que no se especifiquen su tipo serán por omisión de tipo cadena.

16 Jan

Construir métodos que respeten el 'scope' de una consulta

Published by ApuX

En el post anterior, se mostró cómo utilizar los scopes en rails. También se vio que un equivalente es utilizar métodos que realicen estas operaciones. La ventaja de utilizar scopes es que se pueden concatenar varios, por ejemplo:

09 Jan

Scopes en RoR

Published by ApuX

Hay operaciones con los modelos que se vuelven muy comunes y se repiten en varias partes del código, ya sea en controladores, vistas u otros modelos. Cuando esto sucede, lo mejor es 'encapsular' esta funcionalidad, e introducirla en el propio modelo para que esté disponible siempre que se necesite. Para esto, es posible crear un método que realice estas operaciones, o bien, podemos hacer uso de los scopes.

26 Dec

Asociaciones muchos a muchos en RoR (has_many through)

Published by ApuX

Utilizar el enfoque de has_and_belongs_to_many resulta muy práctico y rápido, pero no es tan flexible. Tomemos el mismo caso del ejemplo anterior, dos modelos con una relación muchos a muchos: projects y workers, pero para complicar un poco el caso, supongamos que no sólo necesitamos relacionar estos modelos, sino también especificar algún campo adicional, por ejemplo, la fecha en la que se hizo la asignación. Este campo no puede estar en ninguno de los modelos, tiene que estar en la propia relación. En este caso, deja de ser útil el has_and_belongs_to_many, ya que sólo soporta la tabla intermedia con las llaves foráneas, sin ningún campo extra (pueden haber más campos, pero serán ignorados). En estos casos, la solución es utilizar un modelo intermedio y relacionar los otros modelos usando has_many through.

19 Dec

Asociaciones muchos a muchos en RoR (has_and_belongs_to_many)

Published by ApuX

Las relaciones muchos a muchos en RoR son muy fáciles de manejar, basta con generar una tabla intermedia que contenga las llaves foráneas de las dos tablas que se están relacionando.
Supongamos las dos tablas: projects y workers
Podemos crearlas con un par de scaffolds sencillos

12 Dec

[Actualizado] Operadores lógicos en ruby (||=)

Published by ApuX

Para explicar el comportamiento del operador ||=, pongamos el caso del operador +=. Este operador sirve para sumar al primer operando, el valor del segundo operando y guardar el resultado en el primero.
Ejemplo:

a = 10
a += 5
puts a

imprime

05 Dec

Operadores lógicos en ruby (asignaciones)

Published by ApuX

En Ruby, todas las expresiones se evalúan como verdaderas, excepto nil, y false. Es decir, si se evalúa true, "hola", 4.8, 0, [], etc, el resultado se interpretará como verdadero.
Cuando esta evaluación se hace utilizando operadores lógicos, se evalúa de la siguiente manera:

28 Nov

Operadores lógicos en ruby (and y &&)

Published by ApuX

En ruby existen operadores lógicos que tienen una funcionalidad parecida, por ejemplo and y &&. Sin embargo, hay que utilizarlos con precaución, porque depende de la forma en que sean utilizados, pueden dar resultados diferentes.
Un ejemplo sencillo de esto sería el siguiente fragmento de código:

a = true && false
puts a
b = true and false
puts b

El resultado de ejecutar este código es el siguiente

false
true

25 Oct

Agregar automáticamente una 'marca' a los campos obligatorios en Rails

Published by ApuX

En un formulario, hay campos que no deben quedar vacíos. En Rails, la validación es sencilla: en el modelo, se puede utilizar la instrucción

24 Oct

Mostrar tamaño en disco de cada uno de los repositorios (subversion)

Published by ApuX

En este post, muestro cómo calcular el tamaño de un repositorio en subversion. Aumenta un poco la complejidad si se quiere calcular el tamaño de cada uno de los repositorios a la vez. Para esto, será necesario crear un script.

Páginas