2010-01-22 7 views
0

J'ai donc deux modèles de rails - utilisateur et rôle - chacun spécifié avec habtm et une table de jointure de users_roles. Lorsque je sauvegarde à partir de mon formulaire utilisateur, qui a des cases à cocher pour les rôles à choisir, rails tente d'insérer manuellement une valeur dans la colonne id de la table de jointure. Cela n'a pas de sens pour moi, car la colonne id doit être définie sur auto_increment et n'a donc pas besoin d'une valeur qui lui soit transmise. Chaque fois que j'essaie de sauvegarder, j'obtiens une erreur MySQL.Rails essayant d'envoyer l'ID pour une table de jointure de modèle habtm?

Ai-je raté quelque chose?

Merci.

+1

Pourriez-vous inclure le code de votre action de contrôleur où cela se produit, et peut-être aussi les parties des modèles où vous avez configuré les associations? –

Répondre

1

si vous utilisez l'association has_and_belongs_to_many alors vous ne avez pas besoin de modèle pour la jointure table et la table de jointure ne doit pas être créé avec une colonne id, il doit contenir que les user_id et les colonnes ROLE_ID:

class CreateUsersRolesJoinTable < ActiveRecord::Migration 
    def self.up 
     create_table :users_roles, :id => false do |t| 
     t.integer :user_id 
     t.integer :role_id 
     end 
    end 

    def self.down 
     drop_table :users_roles 
    end 
    end 

Voir aussi:

Questions connexes