除非在Rails中具有某个值,否则从数组中删除元素

时间:2014-06-26 07:37:09

标签: ruby-on-rails ruby arrays ruby-on-rails-4

我有一个“名字”数组,我想显示当前用户的名字,只要它是数组中的唯一名称。如果数组中还有其他名称,我不想显示当前用户的名字。

目前,我列出名称并排除当前用户的名称,但如果它是阵列中唯一的名称,则不希望排除当前用户的名称。我希望我能解释清楚。

我的代码现在:

module ConversationsHelper

def other_user_names(conversation)

    users = []
    conversation.messages.map(&:receipts).each do |receipts|
        users << receipts.select do |receipt|
            receipt.receiver != current_user
        end.map(&:receiver)

    end
    users.flatten.uniq.map(&:name).join ', '

end
end

1 个答案:

答案 0 :(得分:5)

这应该有效:

def other_user_names(conversation)
  # get all users (no duplicates)
  users = conversation.messages.map(&:receipts).map(&:receiver).uniq

  # remove current user if there are more than 1 users
  users.delete(current_user) if users.many?

  # return names
  users.map(&:name).join(', ')
end

我会将第一行移到Conversation#users方法中。