Используйте ActiveSupport :: Concern, чтобы добавить методы класса к каждому классу, который включает в себя ваш модуль, затем вызов self для этого метода вернет имя класса.
Это будет что-то вроде:
module Authenticate
extend ActiveSupport::Concern
module ClassMethods
def authenticate(name, password)
self.class # returns the name of the class that includes this module
end
end
end
class User
include Authenticate
end
# Now You can call
User.authenticate(name, password)
Что делает ActiveSupport :: Concern, так это то, что всякий раз, когда класс включает модуль, он расширяет этот класс с помощью ClassMethods, что здесь эквивалентно
class User
include Authenticate
extend Authenticate::ClassMethods
end