我想创建一个为我的模型添加一些功能的gem。如何为Mongoid模型定义自定义关键字? E.g:
class Book
include Mongoid::Document
has_my_awesome_functionality
end
答案 0 :(得分:2)
如果您有一个名为foobar
的宝石,您可以将以下内容放入宝石的初始化程序中,或者放在单独的文件中(通常称为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