Je m'ajoute aux réponses précédentes pour te recommander d'utiliser un
`#has_many :through`.
Au passage, tu devrais probablement utiliser un nom plus conceptuel pour ta
table de jointure. Si une réunion a plusieurs users et
qu'un user a plusieurs reunions, un ReunionUser est probablement une
Attendance. Ce n'est pas purement cosmétique, ça
te permet de mieux conceptualiser ton application. Par la suite, tu peux
ajouter un champ `confirmed` pour signifier que l'user
a confirmé sa venue, ce qui prendra beaucoup plus naturellement sa place
dans un model nommé Attendance que UserReunion.
Ça semblera également naturel de lister les Attendance d'un User sur sa
fiche personnelle, par exemple.
PS : @Francisco, ton français frôle la perfection :)
On Tuesday, May 7, 2013 1:24:06 PM UTC+2, Nikog51 wrote:
>
> 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 .