2

有没有更好的方法来声明这一点?

if current_user.received_replies.unread.count > 0

我要做的是仅在至少有一个unread对象时才匹配条件。

4

3 回答 3

4
unless current_user.received_replies.unread.empty?
  # ...
end

或者,如果您ifelse,请切换案例(因为unless/else太丑了):

if current_user.received_replies.unread.empty?
  # ...
else
  # ...
end
于 2012-04-26T23:08:49.483 回答
3

我会使用:

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]。任何吗?#=> 真
于 2012-04-26T23:17:21.207 回答
1

这可能会好一点:

unless current_user.received_replies.unread.empty?
于 2012-04-26T23:08:54.703 回答