2008/10/8 Pepe S. [email protected]:
Hola,
Aunque la respuesta estándar, que es la que te han dado y es correcta,
es ponerla en lib/, a veces hay algo más apropiado, teniendo en cuenta
“qué es”, más allá de que sea una clase. En tu caso, yo creo que es un
modelo (no todos los modelos tienen por qué estar respaldados en base
de datos ni heredar de ActiveRecord::Base), y por tanto app/models
también es un buen sitio. Esto, por cierto, lo explican en el Agile
Web D. With Rails, donde en el tutorial (la aplicación de
tienda) usan un modelo no respaldado en base de datos.
Por otra parte, esos libros de programación Ruby que explican
cómocrear clases, a lo mejor los has leído un poco deprisa, porque tu
clase creo que no tiene ni pies ni cabeza. Yo la refactorizaría a algo
como:
class Contact
attr_accessor :name, :email, :message
def initialize(name, email, message)
self.name = name
self.email= email
self.message= message
end
end
Los métodos para establecer los atributos cambiarían de:
contact.email(nuevo_email)
a
contact.email = nuevo_email
Lo cual tiene mucho más sentido, además. Más detalles sobre
attr_accessor en cualquiera de los libros que ya te has leído, por
ejemplo en la página 555 del Programming Ruby, que seguro que es el
primero que leíste.
Otra posible refactorización sería usar Struct, una factoría de clases
que son sólo contenedores de datos (como la tuya), y dejarlo en un
simple:
Contact = Struct.new(:name, :email, :message)
Viene detalladamente explicada en lás páginas 626 y siguientes del
Programming Ruby, también las debiste pasar un poco deprisa.
Un saludo desde la parra y buena suerte,
–
Sergio Gil Pérez de la Manga
e-mail > [email protected]
blog > http://www.lacoctelera.com/porras
now > http://twitter.com/porras