高级 Active Record:增强你的模型
在开发中,我们可以为模型添加各种方法,这些方法可以简单到只返回 true 或 false,也可以复杂到对对象进行重大计算和格式化。Ruby 的强大功能任由我们发挥。如果你还不太敢为模型添加自己的方法,也不用担心。重要的是要知道,Active Record 模型就是普通的 Ruby 类,只要有足够的 Ruby 技能,就可以对其进行扩展、修改、把玩。了解这一点对于理解 Active Record 的高级特性非常有帮助。
胖模型
有些人可能会对 long_title 方法感到不安,他们认为这违反了 MVC 范式,会问:“格式化代码不应该放在视图中吗?”一般来说,答案是肯定的。但拥有智能对象般的模型通常很有帮助。当你向模型询问关于它自身的信息时,自然会期望它能给出一个合理的答案,而不需要后续花费大量精力去解读。所以,在代码中使用能忠实代表模型数据的小格式化字符串和基本数据类型是有益的。
这种智能模型通常被称为胖模型。不把与模型相关的逻辑放在其他地方(如控制器或视图),而是将其保留在模型中,就形成了胖模型。这使得模型更易于使用,也有助于代码遵循 DRY(Don’t Repeat Yourself)原则。
遵循 DRY 原则的一个基本经验法则是,如果你发现自己在复制粘贴代码,不妨花点时间思考是否有更好的解决办法。例如,如果你把 Article#long_title 的格式化代码放在模型之外,每次需要文章标题的友好表示时,可能都要重复相同的基本字符串格式化过程。但如果这个方法只在应用程序的一个地方使用,以后不再使用,那么创建它就是浪费时间。
这就需
超级会员免费看
订阅专栏 解锁全文
14

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



