u = User.email_equals("tabaluga@gmail.com").first
s = u.setting
s.regular_info = false
s.save
有谁知道怎么写得更短?也许在一条线上?那将是真棒。谢谢,merci:)
答案 0 :(得分:4)
User.email_equals("tabaluga@gmail.com").first.setting.update_attribute(:regular_info, false)
(没有便于检查的控制台,但认为应该有效..)
答案 1 :(得分:4)
我不确定您如何定义您的email_equals方法,但Rails提供了基于动态属性的查找程序,它返回第一个匹配项或nil未找到。
User.find_by_email("tabaluga@gmail.com").setting.update_attribute(:regular_info, false)
答案 2 :(得分:0)
尽管您可以将其写成一行,但我还是建议不要这样做。这会使您的代码可读性和可维护性降低。
这也是一个孤立的例子;实际上,电子邮件不会经过硬编码,而是会存储在其自己的变量中,并且可能是参数。
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)