首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么InstanceMethods模块已被弃用?

为什么InstanceMethods模块已被弃用?
EN

Stack Overflow用户
提问于 2018-05-09 09:24:41
回答 1查看 0关注 0票数 0

ActiveSupport :: Concern

通过一个很好的语法,它可以很容易地为你的类添加功能。

无论如何,在Rails 3.2中,InstanceMethods模块已被弃用:

代码语言:javascript
复制
# edit: don't do this! The method definition should just be in the body of the module
included do
    def my_method; end
end
EN

回答 1

Stack Overflow用户

发布于 2018-05-09 18:53:42

代码:

代码语言:javascript
复制
module TagLib
  extend ActiveSupport::Concern

  module ClassMethods
    def find_by_tags()
      # ...
    end
  end

  module InstanceMethods
    def tags()
      # ...
    end
  end 
end

将TagLib包含到您的类中时关注通过ClassMethods模块自动扩展该类,并包含InstanceMethods模块。代码:

代码语言:javascript
复制
class Foo
  include TagLib
  # is roughly the same as
  include TagLib::InstanceMethods
  extend TagLib::ClassMethods
end

但正如你可能已经注意到的那样,我们已经包含了TagLib模块本身,因此它内部定义的方法已经可以作为类中的实例方法了。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档