ruby-on-rails - 如何在 Ruby on Rails 中加入
问题描述
我有一个我正在做的项目,我已经做出了一些改变。我们正在开发一个像 Jira 这样的应用程序,您可以在其中有不同的任务板。我必须创建一个饼图来显示用户有多少任务。我的旧版本代码是这样的:
= pie_chart Task.all.group(:assigned_id).count.map { |k,v| [User.find(k).full_name, v] }.to_h
它奏效了。一位资深人士告诉我创建一个查询来获取名称和任务计数对。直到现在我有这样的东西,但它不工作:
= pie_chart current_account.organization.Tasks = Task.joins(:assigned_id).where(:full_name)
楷模:
class Account < ApplicationRecord
belongs_to :user
belongs_to :role
belongs_to :organization
has_many :activities, dependent: :destroy
has_many :tasks, dependent: :destroy
has_many :activities, dependent: :destroy
has_many :comments, dependent: :destroy
class Organization < ApplicationRecord
include PgSearch
has_one_attached :logo
has_many :accounts
has_many :boards
class Task < ApplicationRecord
has_one_attached :file
belongs_to :list
belongs_to :owner, class_name: "Account", foreign_key: "owner_id"
belongs_to :assigned, class_name: "Account", foreign_key: "assigned_id"
has_many :subtasks, dependent: :destroy
has_many :comments, dependent: :destroy
has_many :activities, dependent: :destroy
class User < ApplicationRecord
include PgSearch
has_many :accounts, dependent: :destroy
has_one_attached :avatar
解决方案
您需要使用用户模型开始查询,加入任务。然后您需要选择全名和任务数。像这样的东西应该工作:
data = User.joins(:tasks).select(:fullname, 'count(tasks.id) AS count')
然后,您可以映射这些以获得所需的数组数组:
data.map { |x| [x.email, x.count] }.to_h
# => { "A name" => 163, ...}
或者在一个衬里:
= pie_chart User.joins(:tasks).select(:fullname, 'count(tasks.id) AS count').map { |x| [x.email, x.count] }.to_h
希望这会有所帮助 - 如果您有任何问题,请告诉我您的进展情况:)
推荐阅读
- python - 生成所有三个数字的集合,总和为 12 python
- javascript - 如何解决“在 PATH 错误中找不到运行时‘节点’”
- python - 无法将文件复制到新目录 - TypeError: os.PathLike object
- kotlin - Bucles for and while
- reactjs - 在 React 中编辑特定的表格行内容
- python - 如果您使用“to_json”保存熊猫数据框,并且索引有一个新标签,有没有办法在文件中保留该标签名称?
- python - Python 中的 BaseXClient:检索问题
- python - 开发警察机器人,但我无法相互比较两次
- c# - 在 C# 调度程序上更改访问数据库文件的文件路径导致运行代码时出错的问题
- spring-boot - 从授权步骤重定向时,OAuth2 客户端失败