through references rails many has_one has_many has_and_belongs_to_many has example belongs and active ruby-on-rails activerecord belongs-to

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.