Merci de vos réponses. En effet cela vient d'une bétise il y a un champ timestamps que j'ai oublié dans la base. cela focntionne bien maintenant. Erreur énorme donc invisible.
Sinon j'ai en effet lu qu'il y a pas mal de critiques sur HABTM mais avec rails 3.2 cette association est encore là et conseillée dans les guides. Il y a déjà en 2009 ? un railscast qui déclarait que cette association allait edvenir obsolète, mais elle est toujours là. Merci en tout cas Nikog51 Le 7 mai 2013 13:41, Julien Grillot <[email protected]> a écrit : > Y-a-t-il un Github accessible ? Quelle version de Rails est utilisée ? > Le bug est connu sur certaines 3.2.x > > S'il n'est pas possible de changer de version, > "has_and_belongs_to_many :users" peut être remplacé par "has_many > :users, :through => :reunions_users" > > Le 7 mai 2013 13:24, Nikog <[email protected]> a écrit : > > Bonjour > > pour une nouvelle petite application je voulais me servir de > l'association > > has_and_belongs_to_many > > > > Le but au départ est d'avoir une réunion qui peut avoir plusieurs users > et > > pouvoir avoir la liste des réunions auquelles chaque user a assisté. > > > > j'ai donc deux modèles user (name / prenom) et reunion (intitule / date) > > chacun étant en relation via has_and_belongs_to_many > > > > j'ai créé une table reunions_users via > > > > ---------------- > > class Createreunionsusersjoin < ActiveRecord::Migration > > def up > > create_table :reunions_users, :id => false do |t| > > t.integer :reunion_id > > t.integer :user_id > > end > > end > > def down > > drop_table :reunions_users > > end > > ---------------- > > > > je créée une vue > > > > dans un form_for(@reunion) > > [...] > > <div class="field"> > > <% for user in User.all %> > > <%= f.label user.name %> - > > <%= check_box_tag "reunion[user_ids][]", user.id, > > @reunion.user_ids.include?(user.id) %> > > <% end %> > > </div> > > [...] > > > > les ùigrations sont bien entendu faites. > > > > > > Premier problème : user_ids n'est pas accessible en écriture. je le > rajoute > > dans le modèle reunion.rb > > > > mais maintenant j'ai une erreur > > > > SQLite3::ConstraintException: reunions_users.created_at may not be NULL: > > INSERT INTO "reunions_users" ("reunion_id", "user_id") VALUES (1, 1) > > > > avec les paramètres suivant > > > > {"utf8"=>"✓", > > "authenticity_token"=>"NkeEkc61tkScFhdFTlxWUmk7hCTUi/2jMhu7wSYtyuI=", > > "reunion"=>{"intitule"=>"test", > > "date(1i)"=>"2013", > > "date(2i)"=>"5", > > "date(3i)"=>"7", > > "date(4i)"=>"10", > > "date(5i)"=>"59", > > "user_ids"=>["1", > > "2"]}, > > "commit"=>"Create Reunion"} > > > > J'avoue, après avoir cherché pas mal, ne pas comprendre pourquoi cela > > déconne. > > > > Si quelqu'un voit la lumière je veux bien un aiguillage :-) > > > > > > Merci > > > > > > > > -- > > -- > > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" > de > > Google Groups. > > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > > [email protected] > > Pour résilier votre abonnement envoyez un e-mail à l'adresse > > [email protected] > > --- > > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > > Railsfrance. > > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > > concernant, envoyez un e-mail à l'adresse > > [email protected]. > > Pour plus d'options, visitez le site > > https://groups.google.com/groups/opt_out . > > > > > > -- > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > Vous recevez ce message, car vous êtes abonné au groupe Google > Groupes Railsfrance. > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected] --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .
