我正在尝试设置一个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)