読み取り部分では正常に機能するが、新しいエントリでは機能しないを設定しようとしてhas_many
います。conditions
数週間前にサンドボックスでテストしましたが、機能しましたが、再び機能させることができないため、盲目であるか、デザインが間違っている可能性があります:-)
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
このようなタスクに新しい担当者を追加した後
Task.first.assignees << User.first
次のSQLが実行されます
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)
新しい値を追加するときに、railsが条件を使用してこれらの値を設定すると思いました。読書はうまくいきますが、新しい値を追加しても条件がうまくいかない理由がわかりません。
私はこの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)