继承“before_filter”风格的方法。

时间:2017-05-26 13:18:41

标签: ruby

我想编写一个子类中可用的方法,其方式与Ruby on Rails中的before filter相同,并且可以以类似的方式使用。

以下是我期望工作的代码:

# presenter_test.rb

module Presenter
  def presenting(model_name)
    # do generic stuff
  end
end

class ApplicationPresenter
  include Presenter
end

class ArticlePresenter < ApplicationPresenter
  presenting :article
end

但是当使用ruby presenter_test.rb运行时,我收到以下错误:

presenting_test.rb:12:in `<class:ArticlePresenter>': 
  undefined method `presenting' for ArticlePresenter:Class (NoMethodError)
from presenting_test.rb:11:in `<main>'

2 个答案:

答案 0 :(得分:1)

您可以使用ActiveSupport::Concern并执行以下操作:

module Presenter
  extend ActiveSupport::Concern

  module ClassMethods
    def presenting(model_name)
      # do generic stuff
    end
  end
end

然后你的课程应该按预期工作。

答案 1 :(得分:1)

以poros为例:

console.log( [].copyWithin.call({length: 5, 3: 1}, 0, 3) ); // How to execute?