Проверка Rails на предыдущей записи менее чем за час - PullRequest
0 голосов
/ 29 марта 2020

Вопрос для начинающих:

class Report < ApplicationRecord
  validates :message, presence: true
  validates :user_has_waited_an_hour, on: :create

  def user_has_waited_an_hour
    if Report.exists?(created_by: self.created_by, created_at: 1.hour.ago..DateTime.now)
        errors.add(:message, "If you wanted to add some more info you're going to have to wait for an hour.")
    end
  end
end

Но он дает мне эту ошибку, которая, как я знаю, связана с определением, потому что без нее нет ошибки:

ArgumentError (You need to supply at least one validation):

app/models/report.rb:3:in `<class:Report>'
app/models/report.rb:1:in `<top (required)>'
app/controllers/reports_controller.rb:26:in `new'

1 Ответ

1 голос
/ 29 марта 2020

Если вы используете пользовательский метод проверки, вам нужно использовать validate вместо validates:

class Report < ApplicationRecord
  validates :message, presence: true
  validate :user_has_waited_an_hour, on: :create

  def user_has_waited_an_hour
    if Report.exists?(created_by: self.created_by, created_at: 1.hour.ago..DateTime.now)
        errors.add(:message, "If you wanted to add some more info you're going to have to wait for an hour.")
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...