仿推特微博应用开发详解
1. 提及功能处理
在创建状态时,会创建一个提及(Mention)将用户与该状态关联起来。在 before 过滤器开始时,会创建一个 @mention 实例变量数组,将所有创建的提及对象放入该数组。这里调用 Mention 的构造函数而非 DataMapper 的 create 方法,只是创建了 Mention 的 Ruby 对象,并非实际的数据库记录,且只向构造函数传递用户对象,不传递状态。这是因为此时 Status 对象尚未创建,若此时保存 Mention 对象,其与 Status 对象的关联会为 nil ,无法正确保存到数据库。
为解决此问题,将处理过程中创建的 Mention 对象存储在 @mentions 实例变量中,然后通过 after 过滤器处理。 after 过滤器会在 Status 成功保存后执行,此时可安全地创建 Mention 与用户的关联。代码如下:
after :save do
unless @mentions.nil?
@mentions.each {|m|
m.s
超级会员免费看
订阅专栏 解锁全文
689

被折叠的 条评论
为什么被折叠?



