Я пишу модуль Ruby, чтобы обеспечить автоматическую генерацию уценки для сообщений в блоге и т. Д.
Код до сих пор выглядит так:
class Post < ActiveRecord::Base
contains_markdown
end
module MarkdownMixin
def contains_markdown
# HELP! :)
end
end
ActiveRecord::Base.send :extend, MarkdownMixin
Этот код, кажется, работает (т.е. мои модульные тесты не выдают никаких «не определенных» ошибок и т. Д.). Таблица Post
содержит столбцы input
и formatted
.
Там, где я написал # HELP
Я хочу внедрить код в модель Post
, чтобы всякий раз, когда вносится изменение в input
, formatted
пересчитывается (с использованием механизма уценки). Нечто подобное (псевдокод):
def on_input_changed
@formatted = Redcarpet.new(@input).to_html
end
Теперь я все еще действительно разбираюсь в миксинах Ruby, так что мой мозг немного крутится, пытаясь понять, какое заклинание вызвать в моем модуле.
Пока я нашел эту статью весьма полезной, но не могу понять, как применить ее здесь.