Active Record - 在模型中自动生成 markdown
我正在编写一个 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
被重新计算(使用 Markdown 引擎)。像(伪代码)这样的东西:
def on_input_changed
@formatted = Redcarpet.new(@input).to_html
end
现在我仍然在认真思考 Ruby mixin,所以我的大脑有点旋转,试图弄清楚在我的模块中调用什么咒语。
到目前为止,我发现这篇文章非常有用,但不能'不知道如何在这里应用它。
I'm writing a Ruby module to provide automatic markdown generation on blog posts etc.
The code so far looks like this:
class Post < ActiveRecord::Base
contains_markdown
end
module MarkdownMixin
def contains_markdown
# HELP! :)
end
end
ActiveRecord::Base.send :extend, MarkdownMixin
That code seems to be working (i.e. my unit tests don't throw any 'not defined' errors etc.). The Post
table contains an input
and formatted
column.
Where I've written # HELP
I want to inject code to the Post
model so that whenever a change is made to input
, formatted
is recalculated (using a Markdown engine). Something like (pseudo-code):
def on_input_changed
@formatted = Redcarpet.new(@input).to_html
end
Now I'm still really getting my head around Ruby mixins so my brain's slightly spinning trying to work out what incantation to call in my module.
So far I've found this article quite useful, but can't work out how to apply it here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为最简单的方法是使用
before_save
进行转换。I think the easiest way would be to use a
before_save
where you make the transformation.