ruby-on-rails – 我可以使用Module#关于?定义类方法吗?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 我可以使用Module#关于?定义类方法吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用Module#related( https://github.com/37signals/concerning – Rails 4.1的一部分)来定义类方法.这样我就可以将单个类使用的模块移回到类中.

但是,似乎我无法定义类方法.鉴于这种:

class User < ActiveRecord::Base
  attr_accessible :name

  concerning :Programmers do
    module ClassMethods 
      def programmer?
        true
      end
    end
  end

  module Managers 
    extend ActiveSupport::Concern

    module ClassMethods
      def manager?
        true
      end
    end
  end

  include Managers
end

我希望这两个工作:

User.manager?
User.programmer?

但第二次提出

NoMethodError: undefined method `programmer?' for #<Class:0x007f9641beafd0>

如何使用Module#关于?定义类方法

解决方法

https://github.com/basecamp/concerning/pull/2修正了这个:
class User < ActiveRecord::Base
  concerning :Programmers do
    class_methods do
      def im_a_class_method
        puts "Yes!"
      end
    end
  end
end

安慰:

> User.im_a_class_method
Yes!

猜你在找的Ruby相关文章