我有一个担忧,看起来像这样:
module Foo
extend ActiveSupport::Concern
def bar
puts "bar"
end
end
其他三个模型使用该类方法,因为它们需要相同的东西。然后,我有一个一次性模型,该模型需要该方法执行其他操作。我有这样的设置:
class FooFoo < ApplicationRecord
def self.bar
puts "foo bar"
end
end
现在,当我调用FooFoo.bar
时,它将打印“ foo”而不是“ foo bar”。如何覆盖关注中定义的方法?我希望它只运行我的模型FooFoo
中定义的方法,而不要运行关注的Foo
中的方法。我环顾四周,但我不认为自己需要什么。一些帮助将不胜感激!
编辑:我也尝试过这种方法,希望它能工作,但没有成功
class FooFoo < ApplicationRecord
def FooFoo.bar # I used FooFoo.bar here instead of self.bar
puts "foo bar"
end
end
答案 0 :(得分:1)
问题在于您需要明确声明希望bar
成为类方法...
module Foo
extend ActiveSupport::Concern
class_methods do
def bar
puts "bar"
end
end
end
现在,您可以覆盖它...
class FooFoo < ApplicationRecord
def self.bar
puts "foo bar"
end
end