Каков рекомендуемый способ расширения поведения класса с помощью class_eval
и модулей (не по наследству), если я хочу расширить класс, похороненный в Gem, из приложения Rails 3?
Пример таков:
Я хочу добавить возможность создавать постоянные ссылки для тегов и категорий (через гем ActsAsTaggableOn и ActsAsCategory).
Они определили Tag
и Category
модели.
Я хочу в основном сделать это:
Category.class_eval do
has_friendly_id :title
end
Tag.class_eval do
has_friendly_id :title
end
Даже если есть другие способы добавления этой функциональности, которые могут быть характерны для гема, каков рекомендуемый способ добавления поведения к классам в приложении на Rails 3, подобном этому?
У меня есть несколько других драгоценных камней, которые я создал, например, модель Configuration
и модель Asset
. Я хотел бы иметь возможность добавить класс-модель app/models/configuration.rb
в свое приложение, и оно будет действовать так, как если бы я только что сделал class_eval
.
В любом случае, как это должно работать? Я не могу найти что-либо, что покрывает это, ни в одном из текущих блогов / документов / книг о Rails 3.