2 votes

Conseils sur les modèles et schémas de table multiples

Si j'ai 3 modèles...

Post, Logo_Category et Logo

et 5 tables

posts, logos, logo_categories, logos_posts et logos_categories_posts

Un article peut contenir un nombre quelconque de logos provenant d'un nombre quelconque de catégories de logos. J'ai commencé à travailler avec HABTM mais je pense que j'ai peut-être choisi le mauvais chemin en termes de schéma.

Quelqu'un a-t-il une idée de la meilleure façon d'associer ces modèles ?

Cheers

EDITAR

Désolé les gars, je pensais avoir résolu ce problème mais...

Conformément à ce que Paul a suggéré, j'ai modifié mes associations comme suit.

POST.erb

has_and_belongs_to_many :logos
has_many :logo_categories, :through => :logos  

LOGO.erb

  belongs_to :logo_category
  has_and_belongs_to_many :posts

LOGO_CATEGORY.erb

has_many :logos
has_and_belongs_to_many :posts

et mes tables sont maintenant...

posts (id) , logos (id), logos_posts (id, logo_id, logo_category_id), logo_categories (id)

Le formulaire de mon article se charge bien et tous les logos et catégories de logos sont chargés avec les valeurs correctes et cochés/décochés (lors de la modification d'un article) correctement.

Je peux cocher un nouveau logo ou décocher un logo existant et cela enregistre bien. Cependant, si je modifie une logo_category, j'obtiens l'erreur suivante !

Il n'est pas possible de modifier l'association "Post#logo_categories" parce qu'elle fait partie de la liste suivante par plus d'une autre association.

Des idées ?

1voto

Paul Points 708

Pour votre table :

[posts] 1--n [post_logos] n--1 [logo] n--1 [logo_category]
  • Chaque message a une ligne dans la table post avec un post_id unique.
  • Chaque logo a une ligne dans la table logo avec un logo_id unique
  • Chaque ligne de la table des logos est liée à une ligne logo_category
  • Chaque fois qu'un logo est associé à un article, une ligne est créée dans la table post_logos. Elle comporte deux colonnes à clé étrangère : post_id et logo_id.

En ruby, chaque objet Post peut contenir un tableau ou une liste d'objets logo. Chaque objet Logo compose un objet Logo_Category (a un membre ou une variable Logo_Category) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X