1

モデルにいくつかの機能を追加するgemを作成したいと思います。Mongoidモデルのカスタムキーワードを定義するにはどうすればよいですか?例えば:

class Book
  include Mongoid::Document

  has_my_awesome_functionality
end
4

1 に答える 1

2

と呼ばれるgemがある場合はfoobar、以下を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
于 2012-08-26T17:44:18.937 に答える