Здравствуйте, у меня есть БД врачей. Там есть поле стоимости часа работы врача. В контроллере я считаю сколько у него пациентов, множу на стоимость работы и узнаю сколько доктор получил денег.
Самих докторов много, у каждого своя стоимость и количество пациентов. Я хочу вывести таблицу всех врачей больницы с графой, допустим "зарплата". Где будет указано сколько каждый из них получил денег(потом буду делать график).
Вот код контроллера. Код работает, но я думаю что можно сделать проще
class DoctorsController < ApplicationController
before_action :set_doctor, only: [:show, :edit, :update, :destroy]
def index
@doctor = Doctor.all
end
def show
@length = User.where(doctor_id: params[:id]).size
@length_length_for_seven_days = User.where("enter_date >= ?", 7.days.ago)
@current_doctor_patients = @length_length_for_seven_days.where(doctor_id: params[:id]).size
@hour_price = current_doctor.doctor_hour_price
@current_money = @current_doctor_patients * @hour_price
end
private
def set_doctor
@doctor = Doctor.find(params[:id])
end
end
Код вывода таблицы докторов:
<tbody>
<tbody>
<% @doctor.each do |doc| %>
<tr>
<td><%= doc.doctor_first_name %></td>
<td><%= doc.doctor_second_name %></td>
<td><%= @current_money %></td>
<td><%= link_to 'Переглянути', doc %></td>
<td><%= link_to 'Редагувати', edit_doctor_path(doc) %></td>
<td><%= link_to 'Видалити', doc, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
Но вместо @current_money - пустые строки. А если напишу doc.current_money, то выдает ошибку. Возможно нужно сохранять значение этой переменной в БД и уже потом выводить. Подскажите как сделать пожалуйста.
Update
Код модели доктора. Поправочка. Пациенты у меня подписаны users
class Doctor < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :users
has_many :prices
has_many :news
has_many :appointments
def current_money
doctor_hour_price*users.where("enter_date >= ?": 7.days.ago).count
end
end