Вычитание рубиновых переменных, которые являются счетчиком активной записи объекта связи - PullRequest
0 голосов
/ 12 октября 2018

У меня есть приложение для авторов и рецензентов.Недавно я добавил функцию, с помощью которой модератор может голосовать за отзывы как за полезные или не полезные, которая определяет оценку рецензента (чтобы контролировать свои отзывы).У меня есть модель обзора с полезными и not_helpful в качестве логических столбцов на таблице, установленной в false по умолчанию.Когда модератор щелкает ссылку в обзоре, показывает, было ли это полезно или не полезно, а затем обновляет логическое значение до true для этой записи обзора.Я пытаюсь построить оценочную карту в профиле этого рецензента, где я использую математику, чтобы вычесть non_helpful отзывы из общего количества отзывов для пользователя, а затем разделить эту сумму на общее количество отзывов, чтобы получить процент для оценки этого рецензента.По сути, когда их обзоры бесполезны, это знак против них, и это все равно, что неправильно задать вопрос на тесте.Таким образом, из всех отзывов мы хотим вычесть все бесполезные отзывы из общего количества отзывов, взять этот ответ и разделить его на общее количество отзывов, чтобы получить их оценку.Пока у меня есть это:

users_controller.rb

def profile
    @current_user = current_user
    @helpful = current_user.reviews.where(helpful: true)
    @unhelpful = current_user.reviews.where(unhelpful: true)
    @reviews = current_user.reviews
    unhelpful = @unhelpful.count
    total = @reviews.count
    subtotal = total - unhelpful
    @score = subtotal / total  

  end

profile.html.erb

Добро пожаловать рецензент,

<h2>How I'm doing</h3>

<table>
  <th>Total Reviews</th>
  <th>Helpful Reviews</th>
  <th>Unhelpful Reviews</th>
  <th>Score</th>
  <tr>
    <td><%= current_user.reviews.count %></td>
    <td><%= @helpful.count %></td>
    <td><%= @unhelpful.count %></td>
    <td><%= number_to_percentage(@score * 100, precision: 0) 
%></td>
  </tr>
</table>

У меня есть 'никогда не делали simpe ruby ​​math с операторами и установкой переменных для активных объектов записи и подсчетом вызовов до них, так каков правильный способ сделать это?Прямо сейчас оценка пользователя составляет 0%, что не правильно, лол, потому что текущий рецензент, на котором я вошел, имеет 4 всего отзывов, 2 полезных и 2 бесполезных, которые должны дать им оценку 50% в соответствии с оценочной системой I 'я пытаюсь достичь

1 Ответ

0 голосов
/ 12 октября 2018

Это называется "целочисленным делением".Когда оба операнда являются целыми числами, результат тоже будет.Так что либо сделайте один / оба операнда плавающими

@score = subtotal.to_f / total

или используйте fdiv

@score = subtotal.fdiv(total)
...