我想有一个简单的博客网站,所以我创建了一个模型:
class Post < ActiveRecord::Base
attr_accessible :title, :body
end我想使用Markdown,但没有HTML标签。我还希望始终保持数据库的干净,我的想法是使用before_save()/before_update()回调来清理我的输入并转义HTML。
我不关心缓存和性能,因此我总是想在需要的时候渲染post。我的想法是在模型中添加以下内容:
def body_as_html
html_from_markdown(body)
end你觉得这样的设计怎么样?MVC和ActiveRecord对我来说是新的,我不确定是否使用回调。
发布于 2010-01-13 05:21:03
我看不出这种方法有什么明显的问题。如果性能成为问题,启用缓存是一件非常简单的事情...让缓存变得有用的重要一点是减少或消除页面上的动态内容,这样缓存就不会一直过时。如果您只是显示博客文章,那么缓存只需要在博客发生变化时重新生成,或者如果有人添加了评论(如果您有评论)。
发布于 2010-01-13 05:42:56
我的一般经验法则是保持数据库中的数据尽可能“纯”,并尽可能靠近用户进行任何清理、呈现、转义或常规处理-通常是在Rails应用程序中的助手方法或视图中。
这对我很有帮助,有几个原因:
因此,为了解决您的特定项目,我建议您的用户将其文本作为Markdown输入,并将其直接存储到数据库中,而不使用before_save钩子(顺便说一句,它将在创建或更新时调用,因此您也不需要before_update钩子,除非在更新时需要特定的内容,但在创建时不需要)。然后我会创建一个帮助器方法,也许是santize_markdown,来做你的清理工作。然后,您可以在原始markdown上调用helper方法,并从经过清理的markdown生成您的body html。这可以放在视图中,也可以放在另一个辅助方法中,这取决于你的喜好和你正在做的不同的地方,但我可能不会把它放在模型中,因为它是特定于显示的。
https://stackoverflow.com/questions/2052456
复制相似问题