繁体   English   中英

如何在Rails的多个数据模型之间共享类方法?

[英]How to share class methods between multiple data models in Rails?

我在Ruby on Rails中有多个Active Record数据模型,它们需要共享类方法。 我可以轻松地在所有类中声明方法,但这违反了DRY原理。

我看过声明一个模块并使用'include'来混合代码,但这似乎仅适用于实例方法,而不适用于类方法。

在Ruby / Rails中执行此操作的首选方法是什么? (我试图创建一个基本的ActiveRecord类并从中继承,但是ActiveRecord吓坏了)。

ClassMethods惯用语是模块提供类和实例方法的常用方法: http ://railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/

只要创建抽象基类,ActiveRecord就不会self.abstract_class = true ,只要在该类中调用self.abstract_class = truehttp : self.abstract_class = true

使用extend而不是include在模块中。 它将混合使用类方法而不是实例方法。

或者,您绝对可以从ActiveRecord::Base继承您的基础模型,并从该基础继承所有普通模型。 ActiveRecord不应惊慌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM