0

我想像很多宝石一样干燥一些模型功能。例如,在 gem中,我们应该只添加acts_as_taggable到任何模型中以启用标记。如何将我自己的include_god_mode模型修改器添加到我的 Rails 项目中?

4

1 回答 1

1

所以我发现它是通过简单的类扩展和混合来实现的。

例如,在acts-as-taggable-ongem 中有很多模块包含在 ActiveRecord::Base 中,因此acts_as_taggable在模型中只是语法糖。

以下是acts-as-taggable-on包括以下内容的来源:

if defined?(ActiveRecord::Base)
  ActiveRecord::Base.extend ActsAsTaggableOn::Taggable
  ActiveRecord::Base.send :include, ActsAsTaggableOn::Tagger
end

if defined?(ActionView::Base)
  ActionView::Base.send :include, ActsAsTaggableOn::TagsHelper
end

因此,如果我想在我的模型中添加这样的糖,我需要在 ActiveRecord::Base(或类似的超类,如果是 ActiveRecord ORM)中包含一个方法,它将包含我的东西的模块。

于 2013-02-04T10:59:46.593 回答