Задача состоит в том, чтобы избежать дублирования и обмениваться методами между классами.Поэтому вам не нужно вызывать модуль для вызова включенного метода, который вы включили в класс.Кроме того, если вы переопределите метод концерна в классе, он переопределит метод концерна.Вот ближе к тому, что, я думаю, вы пытаетесь сделать, но учтите, что вам нужно новое имя метода в классе.
module MyConcern
extend ActiveSupport::Concern
included do
def self.foo # don't pass unused arguments so x is removed here
puts "Hello"
end
end
end
Затем в вашем классе:
class MyClass
include MyConcern
# don't define foo but a new method name
def self.fool(x)
foo
puts "#{x} World"
end
end
Теперь выможете вызвать:
MyClass.fool('bar')
Также обратите внимание, что ваш конкретный пример бесполезен для методов области, вместо этого просто определите методы класса, как я показал здесь.