Как обнаружить ошибку конфликта имен с Active Record в режиме разработки - PullRequest
0 голосов
/ 09 марта 2020

Я определил enum следующим образом.

enum order_quota: {plenty: 0, limited: 1, none: 2}

Затем я получил эту ошибку.

ArgumentError: Вы попытались определить перечисление с именем "order_quota" для модели «Product», но при этом будет создан метод класса «none», который уже определен Active Record.

Я понимаю, что ошибка вызвана конфликтом имен с методом класса Active Record.

Проблема в том, что ошибка возникает только в производственном режиме. Какой конфиг мне следует изменить, чтобы обнаружить ошибку в режиме разработки?

1 Ответ

0 голосов
/ 09 марта 2020

Все, что вам нужно сделать, чтобы проверить это перечисление, - это сослаться на класс, чтобы он был оценен. Когда у вас нет автоматических тестов, вещи взрываются в производстве. Это так же постоянно, как смерть и налоги.

require 'test_helper'

class ProductTest < ActiveSupport::TestCase
  test "it does not blow up" 
    Product
    assert true
  end
end

Причиной возникновения ошибки при запуске в производство, а не в разработке является настройка config.eager_load, которая загружает все ваши модели при запуске. И нет - вы не хотите устанавливать значение true в процессе разработки, чтобы поймать эту ошибку, поскольку это приведет к путанице при перезагрузке кода.

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