Как обновить один столбец в зависимости от значения второго столбца в Rails - PullRequest
0 голосов
/ 03 октября 2018

Я создаю небольшое приложение для изучения языка в Rails, и у меня возникла следующая проблема.Модель 'Flashcard' имеет два целочисленных значения в базе данных: 'counter' и 'level'.

Counter показывает, сколько раз была просмотрена флэш-карта.Уровень зависит от счетчика, например:

, если счетчик находится в диапазоне от 0 до 10, уровень должен быть 1,

, если счетчик находится в диапазоне от 11 до 20, счетчик должен быть равен 2 ии так далее.

Мой вопрос: как обновить один столбец таблицы в зависимости от значения другого?

Возможно, я мог бы использовать серию операторов if или case, но, возможно, есть более простой способ установить все это в Model.

Заранее спасибо.

Ответы [ 2 ]

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

Переопределите ваш метод "counter =" так, чтобы он устанавливал уровень.Использование «супер» метода обновит ваш счетчик как обычно без изменения метода.Для уровня попробуйте использовать математику, чтобы установить его автоматически на основе значения счетчика.

def counter=(value)
  self.level = [(counter - 1) / 10 + 1, 1].max
  super
end
0 голосов
/ 03 октября 2018

Почему даже используется поле level?Просто есть метод level, который возвращает значение на основе поля counter.Возможно, что-то вроде:

class Flashcard < ActiveRecord::Base

  def level
    ([counter-1,0].max/10)+1
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...