【问题标题】:How to add functionality to Mongoid::Document from a gem?如何从 gem 向 Mongoid::Document 添加功能?
【发布时间】:2012-08-26 17:44:18
【问题描述】:

我想创建一个 gem,为我的模型添加一些功能。如何为 Mongoid 模型定义自定义关键字?例如:

class Book
  include Mongoid::Document

  has_my_awesome_functionality
end

【问题讨论】:

    标签: ruby-on-rails ruby gem mongoid mongoid3


    【解决方案1】:

    如果您有一个名为 foobar 的 gem,您可以将以下内容放入您的 gem 的初始化程序中,或者放在一个单独的文件中(通常称为 railtie.rb[,只要确保它正在加载]):

    require 'foobar'
    require 'rails'
    
    class FooBar
      class Railtie < Rails::Railtie
    
      config.before_initialize do
        ::Mongoid::Document.module_eval do
          def self.included(base)
            base.extend FooBar::MongoidExtension
          end
        end
      end if defined?(Mongoid)
    end
    

    您的扩展程序可能如下所示:

    module Foobar::MongoidExtension
      def has_my_awesome_functionality
        # logic here
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-24
      • 2015-06-15
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多