NameError: неопределенная локальная переменная или метод для # <Class in Concern
Я пытаюсь очистить атрибуты, которые входят в строку. Я установил модуль с несколькими методами, которые будут вызывать модель validate
,
Учебный класс:
class Preset < ActiveRecord::Base
include Shared::AttributeDataSanitizer
class AttributeError < StandardError ; end
validate :attribute_sanitization
def attribute_sanitization
raise AttributeError if sanitize_attributes(string).errors.length > 0
rescue AttributeError
errors.add(:string, "errored, some of your attributes are just terrible.")
false
end
end
Модуль:
module Shared::AttributeDataSanitizer
extend ActiveSupport::Concern
def sanitize_attributes(string)
errors = []
text = string.dup
extract(text).each do |attr|
if attr.validation != "valid"
errors << result
end
end
def extract(text)
calculation.scan(/(?<=\[).*?(?=\])/)
end
end
end
когда extract
называется внутри sanitize_attributes
возникает следующая ошибка:
[Rollbar] Reporting exception: undefined method `extract' for #<Preset:0x007f7dce91ba60>
[Rollbar] Исключение не сообщается, потому что Rollbar отключен
NoMethodError (неопределенный метод extract' for #<Preset:0x007f7dce91ba60>):
app/models/concerns/shared/attribute_sanitizer.rb:8:in
app/models/preset.rb:27:in: sanitize_data_attributes attribute_sanitization'
app/controllers/presets_controller.rb:25:in
блок в обновлении '
app/controllers/presets_controller.rb:24: в `обновлении'
extract
не является закрытым методом, но вызывает ли это ошибку, потому что он думает, что это метод класса? Должен ли это быть метод экземпляра? Примечание. Для этого нужно использовать более одного класса.