如何在 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:http://api.rubyonrails.org/classes/ActiveRecord/Inheritance/ClassMethods.html

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

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

最新更新