J'essaye de configurer un has_many
avec conditions
qui fonctionne bien pour la partie de lecture mais pas pour de nouvelles entrées. Je l'ai testé il y a quelques semaines dans un bac à sable et cela a fonctionné, mais je ne peux pas l'obtenir à nouveau travailler alors peut-être que je suis aveugle ou il est juste une mauvaise conception :-)Rails has_many avec la source et les conditions ne crée pas les attributs de condition
class Task
has_many :task_users
has_many :assignees, :through => :task_users, :source => :user, :conditions => {"task_users.is_assignee" => true}
has_many :participants, :through => :task_users, :source => :user
end
class TaskUser < ActiveRecord::Base
belongs_to :user
belongs_to :task
end
class User
has_many :tasks
end
Après avoir ajouté un nouveau cessionnaire à une tâche comme celui-ci
Task.first.assignees << User.first
l'instruction SQL suivante est exécutée
SQL (0.3ms) INSERT INTO `task_users` (`created_at`, `is_assignee`, `task_id`, `updated_at`, `user_id`) VALUES ('2012-11-18 15:52:24', NULL, 2, '2012-11-18 15:52:24', 3)
Je pensais que les rails utiliseront mes conditions pour définir ces valeurs quand j'ajouter de nouveaux ing. La lecture fonctionne très bien mais je n'ai aucune idée pourquoi l'ajout de nouvelles valeurs ne fonctionne pas avec les conditions.
Je me attends ce INSERT
SQL (0.3ms) INSERT INTO `task_users` (`created_at`, `is_assignee`, `task_id`, `updated_at`, `user_id`) VALUES ('2012-11-18 15:52:24', 1, 2, '2012-11-18 15:52:24', 3)
Votre table de jointure appelé '' task_users' ou item_users'? Il semble que vous les utilisiez de façon interchangeable. Pourriez-vous clarifier? – cdesrosiers
il est appelé 'task_users' juste mal saisi' task' avec 'items' parfois :( Correction de fautes de frappe dans mon message – Mike