0

多くの宝石のように、いくつかのモデル機能を乾燥させたいです。たとえば、gem acts-as-taggable-onではacts_as_taggable、モデルにタグを付けるためにモデルに追加する必要があります。include_god_modeRailsプロジェクトに独自のモデルモディファイヤを追加するにはどうすればよいですか?

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 に答える