Vamos a usar el mismo generador que usamos antes al crear el modelo Post
. Esta
vez crearemos el modelo Comment
para los comentarios del artículo. Ejecuta
esto en tu terminal:
$ rails generate model Comment commenter:string body:text post:references
Este comando generará cuatro archivos:
Archivo | Propósito |
---|---|
db/migrate/20100207235629_create_comments.rb | Migración para crear la tabla de comentarios en tu base de datos (en tu caso con un timestamp diferente). |
app/models/comment.rb | El modelo Comment. |
test/unit/comment_test.rb | Pruebas unitarias para el modelo de comentarios. |
test/fixtures/comments.yml | Muestras de comentarios para usar de pruebas. |
Primero, miremos comment.rb
:
class Comment < ActiveRecord::Base
belongs_to :post
attr_accessible :body, :commenter
end
Ésto es muy similar al modelo post.rb
que vimos antes. La diferencia es la
línea belongs_to :post
, que establece una asociación de Active Record.
Aprenderás un poco más sobre asociaciones en la siguiente sección de esta
guía.
Además del modelo, Rails hizo la migración para crear la tabla correspondiente en la base de datos:
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :commenter
t.text :body
t.references :post
t.timestamps
end
add_index :comments, :post_id
end
end
La línea t.references
establece una columna foreign key para la asociación
entre los dos modelos. La línea add_index
establece un index para esta columna
de la asociación. Corre la migración:
$ rake db:migrate
Rails es suficientemente listo para sólo ejecutar las migraciones que no se han ejecutado todavía en la base de datos actual, así que en este caso sólo verás:
== CreateComments: migrating =================================================
-- create_table(:comments)
-> 0.0008s
-- add_index(:comments, :post_id)
-> 0.0003s
== CreateComments: migrated (0.0012s) ========================================