我想像很多宝石一样干燥一些模型功能。例如,在 gem中,我们应该只添加acts_as_taggable
到任何模型中以启用标记。如何将我自己的include_god_mode
模型修改器添加到我的 Rails 项目中?
问问题
130 次
1 回答
1
所以我发现它是通过简单的类扩展和混合来实现的。
例如,在acts-as-taggable-on
gem 中有很多模块包含在 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 回答