ruby-on-rails - 从覆盖范围中包含的关注点调用覆盖范围
问题描述
所以基本上我有一个 MyClass 类,其中包含一个关注 MyConcern 和包含范围“foo”的问题。我希望能够覆盖 MyClass 中的范围“foo”,但仍然能够在 MyConcern 中调用覆盖的范围。
module MyConcern {
extend ActiveSupport::Concern
included do
scope :foo, lambda{ |x|
puts "Hello"
}
end
}
class MyClass {
include MyConcern
scope :foo, lambda{ |x|
MyConcern.foo(x)
puts " World"
}
}
所以当我调用@myClass.foo(1)
where @myClass
is an instance of MyClass 时,我应该能够看到打印出来的“Hello World”。
我可以找到的一个类似线程是Calling super in overriden scope defined in concern,但不幸的是,在我的情况下,我无法使用常规类方法。
任何帮助将不胜感激!
解决方案
当您在 MyConcern 中使用包含时,它会在类上调用“include YourModule”之后发生。但不会改变 MyConcern 上的任何内容。如果您想拥有一个超类方法,请尝试
module MyConcern
extend ActiveSupport::Concern
def self.foo
puts "Hello"
end
end
Now you can call MyConcern.foo
推荐阅读
- python - 使用 LSTMcell 自定义 RNN
- postgresql - 将服务器上的数据库与数据库本地计算机同步
- string-matching - 字符串匹配有限自动机预处理时间
- json - 在 Schema (Json-LD) 中,我应该为文章和技术文章使用什么,“描述”或/和“抽象”或/和“背景故事”?
- c++ - 删除二叉搜索树中的节点
- ms-access - 从批处理文件或任务计划程序将报告输出到 PDF 时出现“无当前记录”错误
- go - 错误:rpc 错误:代码 = 已取消 desc = 上下文已取消
- powershell - 如何使用 Powershell 或 REST 读取 SharePoint Note 字段的 AppendOnlyHistory
- node.js - 无法从节点服务器设置 cookie -> 应用程序
- python - 聊天机器人推理层返回相同的值