【发布时间】:2011-12-04 20:02:42
【问题描述】:
我正在尝试实现一个简单的活动流。
Given that User abc creates a post 123
And User xyz comments on 123.
Then user abc's activity stream should look something like:
<ul>
<li>User <a href="/users/abc">abc</a> created a post <a href="/users/abc/posts/123">123</a></li>
<li>User <a href="/users/xyz">xyz</a> commented on post <a href="/users/abc/posts/123">123</a></li>
</ul>
我更喜欢填充活动模型(而不是控制器中的多个查询)。我在帖子和 cmets 模型中添加了一个“after_create”钩子来填充活动:
class Post < ActiveRecord
after_create do
ActivityCreate(:user_id => self.user_id, :description => "created a post")
end
end
我想存储创建路线和链接所需的特殊字段,例如 post_id 等,但我以后可能有更多想要跟踪的活动,喜欢、不喜欢、收藏夹等,我想要一个灵活的创建活动描述的方式。
所以我的问题是,将 link_to 放入活动描述的有效方法是什么?是否有任何 c 样式的 printf 方式列出稍后评估的助手?
有点像这样:
description = ["用户?评论了帖子?",user_path(User.find(self.user_id)),post_path(Post.find(self.id))]
然后在模板端评估这个?
【问题讨论】:
-
让模型知道有关链接和路由的任何信息可能是个坏主意。
-
同意,也许活动可以更好地处理为多态关联...
标签: ruby-on-rails-3 model render helper