有没有更好的方法来声明这一点?
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?