多くの宝石のように、いくつかのモデル機能を乾燥させたいです。たとえば、gem acts-as-taggable-onでは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 に答える