Ошибка Rails: метод экземпляра уже определен другим перечислением, но повторов нет - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь отладить некоторые ошибки, которые появляются, когда я запускаю bundle exec rake задач.

ArgumentError: You tried to define an enum named "catalogue" on the model "CollectionContext", but this will generate a instance method "museum?", which is already defined by another enum.

Есть несколько вопросов по SO, связанных с этой проблемой, но все, кажется, сводятся к использованиюодного и того же значения для различных перечислений в одной и той же модели, которые могут быть разрешены с помощью _suffix или _prefix.

Вот отличное объяснение использования перечислений в Rails https://naturaily.com/blog/ruby-on-rails-enum

В моемВ этом случае я не вижу дубликат в моей модели. Как я могу отладить ошибку дальше?

class CollectionContext < ActiveRecord::Base
  include Authority::Abilities
  self.authorizer_name = 'ManagedContentAuthorizer'

  has_many :context_sets, inverse_of: :collection_context
  has_many :museum_collections, through: :context_sets,
                                source: :contextable,
                                source_type: 'MuseumCollection'

  enum catalogue: %i[museum archive library]
  enum vocabulary: {category: 10,
                    collection: 20,
                    concept: 30,
                    event: 40,
                    gallery: 50,
                    material: 60,
                    organisation: 70,
                    people: 80,
                    person: 90,
                    place: 100,
                    style: 110,
                    technique: 120}

  validate :check_multiple

  def check_multiple
    if [identifier, query, query_url].compact.count != 1
      errors[:base] << " cannot set multiple context links"
    end
  end
end

Теперь я обнаружил, что если я запускаю rake с моей средой rails, установленной на TEST, это не показывает никаких проблем в консоли. Так что это проблема только развития. Я экспериментировал с моим гемфайлом и помещал все гемы только для разработчиков в группу разработки и тестирования, но все равно получаю сообщение об ошибке при запуске rake в dev.

Это мой файл config / development.rb

# frozen_string_literal: true

Rails.application.configure do
  config.webpacker.check_yarn_integrity = false
  config.cache_classes = false
  config.eager_load = false
  config.consider_all_requests_local = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.active_record.migration_error = :page_load
  config.assets.debug = true
  config.assets.digest = true
  config.assets.raise_runtime_errors = true
  config.web_console.whitelisted_ips = '10.xxxx'
end
...