Не получается настроить ChartKick должным образом.
То, что я пытаюсь сделать, это создать график портфеля акций пользователя. portfolio
- это модель, у которой есть_many PortStocks
, каждая из которых имеет current_value
. Каждый PortStock
принадлежит Stock
.
Мои модели выглядят так:
# == Schema Information
#
# Table name: portfolios
#
# id :bigint(8) not null, primary key
# user_id :integer
# current_dollar_value :float default(0.0)
# dollar_change :float default(0.0)
#
class Portfolio < ApplicationRecord
belongs_to :user
has_many :port_stocks
end
# == Schema Information
#
# Table name: port_stocks
#
# id :bigint(8) not null, primary key
# portfolio_id :integer
# stock_id :integer
# volume :integer
#
class PortStock < ApplicationRecord
belongs_to :portfolio
belongs_to :stock
end
# == Schema Information
#
# Table name: stocks
#
# id :bigint(8) not null, primary key
# ticker :string
# name :string
# price :float
# created_at :datetime not null
# updated_at :datetime not null
#
class Stock < ApplicationRecord
has_many :port_stocks
end
Я попробовал следующее:
<%= pie_chart @portfolio.port_stocks.group(:current_value).count %>
Но это дало круговую диаграмму:
Так что, когда я парю, он показывает мне current_value
, что хорошо, но также показывает : 1
, что странно. Я хочу, чтобы он показал мне имя каждого stock
, к которому можно получить доступ как port_stocks.stock.name
вместе с port_stocks.current_value
для того port_stock
, которому принадлежит stock
.
Редактировать 1
Итак, я попробовал это:
<%= pie_chart @portfolio.port_stocks.joins(:stock).group("stocks.ticker").sum(:current_value) %>
Это производит это:
Кажется, это работает, но я хотел бы иметь возможность отформатировать current_value
как валюту (то есть, используя number_to_currency(current_value)
).
Мысли