译者注:Ruby语言以其灵活性为人所称道,而Ruby on Rails使用了该语言的灵活性,本文作者列举了RoR五点不为人知的使用技巧。
从开始使用Ruby on Rails到现在,几年过去了,我一直没有停止在Ruby的世界中探索。Ruby总能为开发者带来快乐,这些乐趣来源于从中寻求的一些新东西。
这篇文章将分享我近期的一些新发现,包括一些很少使用的方法,多数”语法糖果”,它们并不是编写代码的必需品,但能让你的代码更加整洁。其中一些仅仅是Ruby或者Rails新版本出现的特性。
Hash#dig
拥有7年RoR开发经验的我最近发现,没有在任何人的代码中见过这个方法,原因很明显,因为工作使用的第一个Ruby版本是1.8,而该方法在2.3版本中引入。
你是否曾多次写过这样的代码:
... if params[:user] && params[:user][:address] && params[:user][:address][:somewhere_deep]
对于Hash对象可以考虑dig 作为安全导航操作符(&.),那么代码重写后如下:
... if params.dig(:user, :address, :somewhere_deep)
Object#presence_in
这个方法在一篇关于在Ruby on Rails中查询对象的非常好文章中见过。当你实际并不需要包含检查的布尔结果,而是检查对象本身时,它允许你通过简单的方法调用来替换条件(通常是三元)。比如这样的代码:
` sort_options = [:by_date, :by_title, :by_author] … sort = sort_options.include?(params[:sort]) ? params[:sort]
:by_date
Another option
sort = (sort_options.include?(params[:sort]) && params[:sort]) || :by_date
`
下面这样写是不是更好?
params[:sort].presence_in(sort_options) || :by_date
Module#alias_attribute
项目中使用遗产数据库时非常有用。它包含一个拥有奇怪列名(如SERNUM_0、ITMDES1_0)的表格,将表格映射到ActiveRecord模型,不是像WeirdTable.where(SERNUM_0: ‘123’)这样编写查询和范围,而是采用alias_attribute,因为它不仅仅产生getter和setter方法()还产生断言方法),并且查询也很有效率。
alias_attribute :name, :www.senta77.com ITMDES1_0
...
scope :by_name, -> (name) { where(name: name) }
Object#presence
相对而言,这个方法更加流行。在ApiDock上有非常好的解释。object.presence等同于:
object.present? ? object : nil
Module#delegate
因为某些原因几乎不会被大部分开发者用到。方法的主要目的是解耦和遵循“得墨忒耳定律”。这个方面很有见解的文章是Avdi Grimm写的“得墨忒耳不仅是思想,还是定律。”此外,可以参阅“Rails最佳实践文章”利用delegate运用得墨忒耳定律。以下代码片段可以说明:
class Profile < www.boyuanyl.cn ApplicationRecord
belongs_to :user
delegate :email, to: :user
end
...
profile.email # equivalent www.tkcyl1.com/ to profile.user.email
希望你也能发现类似这样的有用的技巧,祝编码愉快!
你可能不知道的RoR 5点技巧
时间: 2024-11-07 15:15:00
你可能不知道的RoR 5点技巧的相关文章
您可能不知道的ASP.Net小技巧
<!-- 页码和简介 --> 1. 在提交页面之后,保持滚动条的位置 可以在page指令上加上MaintainScrollPositionOnPostback指令 <%@ Page Language="C#" MaintainScrollPositionOnPostback="true"AutoEventWireup="true" CodeFile="..." Inherits="..."
(转)优秀程序员不得不知道的20个位运算技巧
一 提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入 适当的位运算也会让您的程序增加一丝亮点,最初当我读<编程之美>求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 <Hacker's Delight>,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧 还是必要的,所
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读<编程之美>求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 <Hacker's Delight>,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧还是必要的,所以今天
你所不知道的Android Studio调试技巧
转载:http://www.jianshu.com/p/011eb88f4e0d Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug,进而解决,可是我们的看家本领.正所谓,工欲善其事必先利其器,和其他开发工具一样,如Eclipse.Idea,Android Studio也为我们提供了强大的调试技巧,今天我们就来看看Android Studio中有关调试的技巧. 首先,来看看Android studio中为我们提供的调试面板(标准
你可能不知道的 Android Studio 小技巧之「多行编辑」
Android Studio 大家应该都很熟悉了,但是可能很多人都仅限基本的功能使用,而 Android Studio 非常强大,有很多非常实用却又鲜为人知的小技巧,熟练掌握这些小技巧将能极大的提高你的工作效率,今天就来给大家介绍一个很实用的小技巧「多行编辑」. 正常情况下我们写代码都是一行一行敲的,就如当初我们小时候写作业大部分都是一支笔去写,而有部分同学在写一些重复的作业时有同时用两支笔写的,比如我就干过这种事.在一些重复性工作的时候,会极大的提高效率,而 Android Studio 就有
你可能不知道的10条SQL技巧,涨知识了!
这几天在写索引,想到一些有意思的TIPS,希望大家有收获. 一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好习惯 可以优化为in查询: select * from order where status in(2,3) (2)前导模糊查询不能使用索引 select * from order where desc like '%XX' 而非前导模糊查
Android drawable微技巧,你所不知道的drawable的那些细节
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/50727753 好像有挺久时间没更新博客了,最近我为了准备下一个系列的博客,也是花了很长的时间研读源码.很遗憾的是,下一个系列的博客我可能还要再过一段时间才能写出来,那么为了不至于让大家等太久,今天就给大家更新一篇单篇的文章,讲一讲Android drawable方面的微技巧. 话说微技巧这个词也是我自己发明的,因为drawable这个东西相信大家天天都在使用,每个人都再熟悉不过了
[iOS翻译]《iOS 7 Programming Pushing the Limits》系列:你可能不知道的Objective-C技巧
简介: 如果你阅读这本书,你可能已经牢牢掌握iOS开发的基础,但这里有一些小特点和实践是许多开发者并不熟悉的,甚至有数年经验的开发者也是.在这一章里,你会学到一些很重要的开发技巧,但这仍远远不够,你还需要积累更多的实践来让你的代码更强力. /* 本文翻译自<iOS 7 Programming Pushing the Limits>一书的第三章“You May Not Know”,想体会原文精髓的朋友请支持原书正版. ——————(博客园.新浪微博)葛布林大帝 */ 目录: 一. 最好的命名实践
14 个你可能不知道的 JavaScript 调试技巧
了解你的工具可以极大的帮助你完成任务.尽管 JavaScript 的调试非常麻烦,但在掌握了技巧 (tricks) 的情况下,你依然可以用尽量少的的时间解决这些错误 (errors) 和问题 (bugs) . 我们会列出14个你可能不知道的调试技巧, 但是一旦知道了,你就会迫不及待的想在下次需要调试 JavaScript 代码的时候使用它们! 现在开始. 虽然许多技巧也可以用在别的检查工具上,但大部分的技巧是用在 Chrome Inspector 和 Firefox 上的. 1. 'debugg