Я пытаюсь отладить некоторые ошибки, которые появляются, когда я запускаю 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