Проверка, относится ли перемешивание к enum как значению - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть модель Rails 5, где есть

enum status: [:st1, :st2, :st3]

Я хочу установить его статус, используя строку или символ . Как я могу убедиться, что строка принадлежит списку значений, которые может иметь status?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы можете создать метод, подобный Marek's, для проверки правильности ключа перед обновлением:

def self.validate_status(some_status)
  ModelName.statuses.keys.include?(some_status.to_sym)
end

или вы можете спасти ArgumentError из вашего ApiController (если вы используете API) с помощью чего-то вроде:

rescue_from ArgumentError, with: :render_status_error

def render_status_error(exception)
  logger.info(exception)
  render json: { error: 'Invalid status' }, status: :bad_request
end
0 голосов
/ 07 ноября 2018

Именно так и работает по умолчанию. Если вы пытаетесь назначить что-то еще, возникает исключение

ArgumentError: <value> is not a valid <your_enum>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...