【发布时间】:2016-02-28 23:51:06
【问题描述】:
我有一个 Rails 应用程序。我想显示按当前用户的常见任务数量排序的用户配置文件。每个任务都有一个分配者和一个执行者。该数字应包括同一用户的executed_tasks 和assigned_tasks。例如,如果 current_user 为 User4 分配了 5 个任务,而 User4 为 current_user 分配了 3 个任务,那么这个数字就是 8。
我的主要问题是我不知道如何将给定的用户用作计数的 arg。我应该以某种方式在模型中执行还是在控制器中设置实例变量 (@users) 时执行?
task.rb
belongs_to :assigner, class_name: "User"
belongs_to :executor, class_name: "User"
scope :between, -> (assigner_id, executor_id) do
where("(tasks.assigner_id = ? AND tasks.executor_id = ?) OR (tasks.assigner_id = ? AND tasks.executor_id = ?)", assigner_id, executor_id, executor_id, assigner_id)
end
用户.rb
has_many :assigned_tasks, class_name: "Task", foreign_key: "assigner_id", dependent: :destroy
has_many :executed_tasks, class_name: "Task", foreign_key: "executor_id", dependent: :destroy
【问题讨论】:
标签: sql ruby-on-rails activerecord scope sql-order-by