rutas references rails que example ruby-on-rails ruby scaffolding

ruby on rails - references - Crear relaciones cuando los andamios.



scaffold controller rails (2)

Hola soy nuevo en Ruby on Rails. Estoy tratando de crear un pequeño blog. Tengo dos tablas de Publicaciones y Comentarios. Cada publicación tendrá muchos comentarios. Yo genero las tablas usando estos comandos.

rails g scaffold Post title:string body:text author:string rails g scaffold Comment body:string author:string

Ahora quiero agregar la relación a las clases modelo. Añado has_many :comments a la clase belongs_to :title y belongs_to :title a la clase Comentario. Sin embargo, cuando trato de llamar a post.comments , post.comments un error de tiempo de ejecución que dice SQLException: no such column: comments.post_id . ¿Debo crear una migración y agregar post_id en Comentario o hay alguna forma de lograr esto cuando se realiza un andamio?


Definitivamente estás en el camino correcto. Si agrega la columna post_id al generar el andamio de Comment su relación funcionará (aunque todavía necesita agregar has_many :comments y belongs_to :post )

Así que la llamada al generador actualizado se vería así:

rails g scaffold Comment body:string author:string post_id:integer


Scaffold en realidad proporciona una forma de generar relaciones, debe usar el tipo de datos :references

rails g scaffold Comment body:string author:string post:references

Esto generará una migración para la tabla de comentarios con un campo post_id e índice para ella. El generador también agregará belongs_to :post en el modelo de comentario.

Sin embargo, no generará el reverso de la relación, por lo que deberá agregar

has_many :comments

para el modelo de correos usted mismo. También necesitará agregar enrutamiento de recursos anidados si esto es algo que necesita ya que el generador no puede manejar esto.