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 .