ruby-on-rails - many - rails model references
Rails pertenece a muchos modelos (2)
Sí, ese es el enfoque correcto.
Encontré algunas preguntas sobre SO sobre las asociaciones de Rails que son algo así como mi pregunta, pero por mi vida parece que no puedo entender cómo usar belongs_to
varios modelos.
Aquí está la estructura de la mesa que pretendo tener:
User
id
Post
id
user_id #foreign key; a post belongs to a User aka "Who created this post"
Comment
id
user_id #foreign key; a comment belongs to a User aka "Who made this comment"
post_id #foreign key; a comment belongs to a Post aka "What post this comment is for"
Y las asociaciones :
User
has_many :posts
has_many :comments
Post
belongs_to :user
has_many :comments
Comment
belongs_to :user
belongs_to :post
¿Es este el enfoque correcto?
Si bien no siempre es el "mejor" enfoque, Rails ofrece lo que se llama una asociación Polimórfica belongs_to . Le impide definir una clave externa en la base de datos porque la columna xxx_id está haciendo referencia a un id en una de muchas tablas posibles, mientras que otra columna designa el nombre del modelo de esa tabla, pero hace que la relación sea más explícita en Rails. Además, restringe el modelo para que solo pertenezca a uno de los otros modelos, en lugar de pertenecer a uno o más, como sucedería utilizando la configuración de varias claves externas sin alguna magia db adicional.