首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails扩展ActiveRecord::Base

Rails扩展ActiveRecord::Base
EN

Stack Overflow用户
提问于 2010-02-25 03:49:38
回答 6查看 68.3K关注 0票数 161

我读过一些关于如何扩展ActiveRecord:基类的文章,这样我的模型就会有一些特殊的方法。扩展它的简单方法是什么(逐步教程)?

EN

回答 6

Stack Overflow用户

发布于 2010-02-25 07:40:48

您可以简单地扩展类并简单地使用继承。

class AbstractModel < ActiveRecord::Base  
  self.abstract_class = true
end

class Foo < AbstractModel
end

class Bar < AbstractModel
end
票数 70
EN

Stack Overflow用户

发布于 2012-02-09 03:36:52

您也可以使用ActiveSupport::Concern,更像是Rails的核心习惯用法:

module MyExtension
  extend ActiveSupport::Concern

  def foo
  end

  module ClassMethods
    def bar
    end
  end
end

ActiveRecord::Base.send(:include, MyExtension)

根据@daniel的评论进行编辑

然后,您的所有模型都将包含方法foo作为实例方法,并将ClassMethods中的方法包含为类方法。例如,在FooBar < ActiveRecord::Base上,您将拥有:FooBar.barFooBar#foo

http://api.rubyonrails.org/classes/ActiveSupport/Concern.html

票数 21
EN

Stack Overflow用户

发布于 2017-01-25 00:03:43

Rails5提供了一个扩展ActiveRecord::Base的内置机制。

这是通过提供额外的层来实现的:

# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
  # put your extensions here
end

所有的模型都是从这个模型继承过来的:

class Post < ApplicationRecord
end

例如,参见this blogpost

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2328984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档