作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我爱ActiveSupport::Concern .
它使向您的类添加功能变得容易,而且语法很好。
无论如何,在 Rails 3.2 中,InstanceMethods 模块已被弃用。如果我理解正确,我们应该在 included
中定义我们的方法。 block (实际上它只是在模块的主体):
# edit: don't do this! The method definition should just be in the body of the module
included do
def my_method; end
end
最佳答案
让我们看一下您首先链接的示例。
module TagLib
extend ActiveSupport::Concern
module ClassMethods
def find_by_tags()
# ...
end
end
module InstanceMethods
def tags()
# ...
end
end
end
class Foo
include TagLib
# is roughly the same as
include TagLib::InstanceMethods
extend TagLib::ClassMethods
end
module TagLib
extend ActiveSupport::Concern
module ClassMethods
def find_by_tags()
# ...
end
end
def tags()
# ...
end
end
class Foo
include TagLib
# does only `extend TagLib::ClassMethods` for you
end
关于ruby-on-rails - 为什么 InstanceMethods 模块已被弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706897/
我是一名优秀的程序员,十分优秀!