2010-04-13 14 views
6

Soy nuevo en Ruby and Rails así que tengan paciencia, por favor. He creado una aplicación de blog muy simple con publicaciones y comentarios. Todo funciona bien Mi siguiente pregunta sobre agregar categorías. Me pregunto cuál es la mejor manera de hacer esto. Como no puedo ver demasiado delante de mí, sin embargo, cuando se trata de Rails, pensé que podría preguntar.¿Cuál es la mejor manera de agregar categorías a las publicaciones? Blog de Ruby on Rails

Para ser claros, me gustaría que una sola publicación pueda tener múltiples categorías y una categoría puede tener múltiples publicaciones.

¿Es la mejor manera de hacerlo crear una tabla de "categorías" y luego utilizar los modelos de publicaciones y categorías para hacer has_many :posts, has_many :categories? ¿Luego también configuraría el routes.rb para que las publicaciones se incluyan en categorías?

¿O hay una manera más fácil simplemente agregando una columna de categoría a la tabla de publicaciones existentes? (en cuyo caso me imagino que tener múltiples categorías sería difícil).

Respuesta

8

Dado que desea una relación de varios a varios entre categorías y publicaciones, usaría (y haré) un complemento de etiquetado como ActsAsTaggableOn, donde puede definir a qué se refiere una "etiqueta", y llámelo " categoría." Simple y efectivo. En su forma, puede limitar los valores posibles para una "etiqueta" con una lista blanca (como "codificación", "recetas", "vacaciones") para sus diferentes categorías.

19

Depende la cantidad de esfuerzo que usted está dispuesto a poner en - que podría utilizar un plugin de etiquetado, o la creación de una relación has_and_belongs_to_many tanto en los mensajes y modelos categorías, pero lo recomiendo algo un poco diferente.

Si crea un tercer modelo, "Categorizaciones", como una especie de "pegamento" entre Publicaciones y Categorías, puede tener más control. Mensaje has_many :categories :through => categorizations y categoría has_many :posts :through => :categorizations

Una ventaja de esto es que sus categorías no se almacenan en su código, sino más bien en la base de datos - por lo que añadir/eliminar/editar ellas no requieren que modificar el código fuente. La forma de configurar las rutas depende completamente de usted; puede tener /categories/:id devolver una lista de todas las publicaciones que pertenecen a esa categoría, o implementar algún tipo de formulario de búsqueda usando una o más categorías como parámetros.

Ryan Bates tiene un excellent screencast explicando todo esto, con varias formas diferentes de abordar el problema.

Sé que has mencionado que eres nuevo en RoR, así que te pido disculpas si esto es un poco complicado para lo que quieres. Como dije, un complemento podría ser el mejor para sus necesidades, pero me parece que siempre es bueno haberlo codificado usted mismo si es posible, con el beneficio adicional de tener más flexibilidad y control :)

Cuestiones relacionadas