ruby写这四条指令的最短路径是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby写这四条指令的最短路径是什么?相关的知识,希望对你有一定的参考价值。
u = User.email_equals("tabaluga@gmail.com").first
s = u.setting
s.regular_info = false
s.save
有谁知道怎么写得更短?也许在一条线上?那将是真棒。谢谢,merci :)
答案
User.email_equals("tabaluga@gmail.com").first.setting.update_attribute(:regular_info, false)
(没有便于检查的控制台,但认为应该工作..)
另一答案
我不确定你如何定义你的email_equals方法,但是Rails提供了基于动态属性的查找器,它返回第一个匹配或nil未找到。
User.find_by_email("tabaluga@gmail.com").setting.update_attribute(:regular_info, false)
另一答案
虽然你可以写一行,但我建议不要这样做。这使您的代码更易于阅读和维护。
这也是一个孤立的例子;实际上,电子邮件不会被硬编码,它将存储在自己的变量中,可能是一个参数。
一个班轮
User.email_equals("tabaluga@gmail.com").first.setting.update_attribute(:regular_info, false)
两个班轮
user = User.email_equals("tabaluga@gmail.com").first
user.setting.update_attribute(:regular_info, false)
# Or...
user_setting = User.email_equals("tabaluga@gmail.com").first.setting
user_setting.update_attribute(:regular_info, false)
# More readable, but not maintainable
User.email_equals("tabaluga@gmail.com").first \
.setting.update_attribute(:regular_info, false)
三个班轮
user = User.email_equals("tabaluga@gmail.com").first
setting = user.setting
setting.update_attribute(:regular_info, false)
以上是关于ruby写这四条指令的最短路径是什么?的主要内容,如果未能解决你的问题,请参考以下文章