Пользовательская проверка в Rails на другой модели - PullRequest
1 голос
/ 04 мая 2020

Как я могу использовать пользовательскую проверку между двумя различными моделями в Ruby на Rails?

У меня есть две модели, как я могу проверить столбцы между этими двумя моделями.

1 Ответ

0 голосов
/ 04 мая 2020

Самый простой способ - создать отдельный класс валидатора вместо обычного метода валидации. В действительности валидатор - это просто подкласс ActiveModel::Validator или ActiveModel::EachValidator, который реализует #validate или #validate_each:

class TitleCaseValidator < ActiveModel::Validator
  def validate(record)
    unless record.name[0] == record.name[0].upcase
      record.errors[:title] << 'must be title cased'
    end
  end
end
class Album
  validates_with TitleCaseValidator 
end

class Book
  validates_with TitleCaseValidator 
end
class TitleCaseValidator < ActiveModel::EachValidator
  def validate(record, attribute, value)
    unless value[0] == value[0].upcase
      record.errors[attribute] << 'must be title cased'
    end
  end
end
class Album
  validates :title, title_case: true
end

class Artist
  validates :name, title_case: true
end

См. Выполнение пользовательских проверок .

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