谢谢安道的翻译,购买过电子版本,之前也收到过安道赠送的书籍。
参考 inject 使用文档
[1,2,3,4,5,6].inject([]) do |sum, i|
当你对数组调用 inject 方法并进行迭代时,sum 刚开始是为 [],然后下面一句是需要注意的,迭代过程中 block 的返回值会赋值给 sum,并作为下一次的输入,最终迭代完成后,sum 的值作为返回结果。
In either case, the result becomes the new value for memo. At the end of the iteration, the final value of memo is the return value for the method.
所以,当进行如下判断时
if i > 1
sum << i
end
执行完成 if 语句后,返回的值为 nil,此时本次迭代的返回值 nil 就会赋值给 sum,当下一次再进行迭代时,就会报你遇到的以下错误
NoMethodError: undefined method `<<' for nil:NilClass
在 block 迭代的时候,显式返回 sum 就行了
[1,2,3,4,5,6].inject([]) do |sum, i|
if i > 1
sum << i
end
sum
end
errors.messages 里面针对 attr 对应的 message 是数组的形式,所以如果需要单独显示每条,可以再次遍历 message 即可
<% @customer.errors.messages.each do |attr,message| %>
<% message.each do |msg| %>
<li><%= msg %></li>
<% end %>
<% end %>
<% if @customer.errors.full_messages.any? %>
<% @customer.errors.messages.values.each do |msg| %>
<li> <%= msg %> </li>
<% end %>
<% end %>
你之前日志里面显示了错误信息的 key,比如 Mobile,Name 等 用以上的方式就只打印错误的 value,而不用打印 key
是的,定时部署,我目前用的 cron 定时调用部署脚本。
只是举了个业务中的实例,是业务中自己创建的代码目录,可以不用关注。
是的,更精确的还是用的 datetime 类型
用 int 代替 datetime,主要是为了满足这种场景,比如要查询 2017 年 5 月 12 号的记录,则可以用条件 record_date = 20170512,如果对 datetime 创建索引,则直接可以索引命中。 如果用 datetime 类型,则需要做条件判断,比如 record_date > "2017-05-12 00:00:00" and record_date < "2017-05-12 23:59:59"
@pathbox 谢谢你回复及分析。 目前的业务使用场景
你在上面提到的,如果返回记录在 10W+ 的场景,如果用默认的 find_each 一样会存在索引失效的问题,的确如你所说,需要自己指定 order by field_column。
对你的回复,再次表示感谢。
已经到货,书的装订和印刷质量挺好,至于内容,等读完再评价
@ccok 体验过 蛋人网上面的教学,真的是非常用心的在做,课程质量也是相当高,对程序员而言,一年 800 多点儿的订阅费用,的确还是比较便宜,希望蛋人网能够一如既往的坚持高质量,相信会有越来越多的人订阅,并从中收益,也希望蛋人网能够一直做下去,我是会通过订阅来支持你们的。
@15731118085 多文件及图片上传的,我最终是用的 jquery 文件异步上传插件,非常好用,也没用阻塞服务,请参考下面的例子
写 ruby 之前,一直都是写 C++,编写电信设备相关管理软件,精读过不少 C++ 书箱,初学者我强力推荐下面 4 本,请按先后阅读:
@nouse 可能我信息没跟上,请你推荐一些更好的选择,谢谢。
@1c7 谢谢提醒,在开头处,已经补充。
@pynix 5.0.0 正式版本还没有发布,我当时安装的是 5.0.0.beta1 --pre,已更新
@pynix @small_fish__ 网站作者 Terry Tai 已经将问题修复,可以访问了。
个人建议还是买一本,这个书看完后,多数人会一直保留着的,这不是看完一次就收箱底的书,很多时候都会再拿出来翻翻,做参考。
@xiaokele233 和白帽汇的刘宇深入交流过,白帽汇是一家以技术为驱动的公司,友情帮顶,祝早日招到合适的 ruby 高手!
之前看了 intel 在无人机方面的最新科技,重点也是跟随 + 避障
@onemagicant 谢谢,已经更新列表
初次印象
周末两天,刚好可以拜读。
好书,多谢楼主分享,已经在京东上面购买。
支持安道的作品 :plus1:
调用方法时 Ruby 做两件事
注意,在 MyClass 没有实例化对象之前,MyClass 的实例方法,只有 method_one,这点可以用以下语句证实
MyClass.instance_methods(false)
obj 是 MyClass 对象 1、若直接执行 obj.method_two,首先向右一步,在 MyClass 中查找 method_two,没查到,然后在 MyClass 的祖先链上面查找,也没查到,所以最终在 method_missing 方法中会报undefined method `method_two'
2、若先执行 obj.method_one,在 MyClass 中查找到 method_one,于是在执行 method_one 的方法调用的同时,定义 MyClass 的实例方法 method_two,此时 method_two 才会加入到 MyClass 的实例方法列表中,所以,这时再 new 一个 MyClass 的对象,可以用新的对象直接调用 method_two 实例方法,而不用再执行 method_one 方法
obj2 = MyClass.new
obj2.method_two
以上会直接输出“hello!”
@rubyist518 谢谢,已经更新
@ruby_xiaojie 转载自 ruby_news 官网 twitter