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 .


Répondre à