ruby-on-rails – 如何在Rails模型中创建多个类和实例方法

ruby-on-rails – 如何在Rails模型中创建多个类和实例方法,第1张

概述我这样做 def self.a ...enddef a class.aend 但是对于几种方法,我将不得不复制实例方法. 我在一个模块中思考 module A def a; endend 然后在我的模型中使用它,如下所示: extend Ainclude A 但我不知道在哪里根据Rails文件夹结构放置它,或者甚至将模块放在我的模型中. 有什么建议? 选项1 – 扩展自我 我这样做

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模型中创建多个类和实例方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1290557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存