def self.a ...enddef a class.aend
但是对于几种方法,我将不得不复制实例方法.
我在一个模块中思考
module A def a; endend
然后在我的模型中使用它,如下所示:
extend Ainclude A
但我不知道在哪里根据Rails文件夹结构放置它,或者甚至将模块放在我的模型中.
有什么建议?
解决方法 选项1 – 扩展自我如果您希望将所有实例方法都作为类方法,则可以使用extend self
class A def foo ... end def bar ... end extend selfend
这将允许您将foo称为A.foo或A.new.foo.
选项2 – 包含的模块
如果您只希望某些实例方法可用作类方法,那么您应该按照建议创建一个模块.您可以将该模块放在lib /文件夹中,或者要求它或将lib添加到自动加载路径.
您也可以直接在类中包含模块,如下所示:
class A def not_shared ... end module SharedMethods def foo ... end def bar ... end end extend SharedMethods include SharedMethodsend
选项3 – 代表
如果您正在使用Rails(或仅使用ActiveSupport),您还可以使用它添加到类/模块的委托方法.
class A def not_shared ... end def foo ... end def bar ... end delegate :foo,:bar,to: 'self.class'end
详情请见此处:
http://rdoc.info/docs/rails/3.0.0/Module:delegate
总结以上是内存溢出为你收集整理的ruby-on-rails – 如何在Rails模型中创建多个类和实例方法全部内容,希望文章能够帮你解决ruby-on-rails – 如何在Rails模型中创建多个类和实例方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)