有没有更好的方法来声明这一点?
if current_user.received_replies.unread.count > 0
我要做的是仅在至少有一个unread对象时才匹配条件。
有没有更好的方法来声明这一点?
if current_user.received_replies.unread.count > 0
我要做的是仅在至少有一个unread对象时才匹配条件。
unless current_user.received_replies.unread.empty?
# ...
end
或者,如果您if有else,请切换案例(因为unless/else太丑了):
if current_user.received_replies.unread.empty?
# ...
else
# ...
end
我会使用:
if current_user.received_replies.unread.any?
从文档:
= Array.any?
(来自红宝石核心)
=== 从 Enumerable 实现
-------------------------------------------------- ----------------------------
枚举。任何?[{|对象| 块 } ] -> 真或假
-------------------------------------------------- ----------------------------
将集合的每个元素传递给给定的块。方法返回
如果块曾经返回 false 或 nil 以外的值,则返回 true。如果块
没有给出,Ruby 添加了 {|obj| 的隐式块 obj} (那是什么?将
如果至少有一个集合成员不是 false 或 nil,则返回 true。
%w{蚂蚁熊猫}.any? {|字| word.length >= 3} #=> 真
%w{蚂蚁熊猫}.any? {|字| word.length >= 4} #=> 真
[无,真实,99]。任何吗?#=> 真
这可能会好一点:
unless current_user.received_replies.unread.empty?