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:inapp/models/preset.rb:27:in: sanitize_data_attributes attribute_sanitization' app/controllers/presets_controller.rb:25:inблок в обновлении ' app/controllers/presets_controller.rb:24: в `обновлении'

extract не является закрытым методом, но вызывает ли это ошибку, потому что он думает, что это метод класса? Должен ли это быть метод экземпляра? Примечание. Для этого нужно использовать более одного класса.

0 ответов

Другие вопросы по тегам