如何检查 Ruby 中的数组中是否存在模型

How to check if a model is present in an Array in Ruby

我有一个数组,里面的元素是 2 个模型的混合:ArticleProfile

有没有办法检查数组中是否有Article and/or Profile模型?我看到的函数 include? 适用于特定元素,而不是它们的 class.

示例: 鉴于 [Profile1, Profile2, Article1] 我想检查那里是否有 ArticleProfile。我只能检查是否有一个名为 Profile1.

的元素

如有任何帮助,我们将不胜感激!谢谢!

您可以使用方法any? with the method is_a?

这里有一个方法可以知道数组中是否有 ArticleProfile

array = [Profile1, Profile2, Article1]
array.any? { |a| a.is_a?(Article) || a.is_a?(Profile) }

你甚至可以使用 instance_of?

array = [Profile1, Profile2, Article1]
array.any?{ |v| v.instance_of?(Profile) || v.instance_of?(Article) }

如果你想统计每个模型,你可以这样做:

对于文章

array = [Profile1, Profile2, Article1]
array.map{ |v| v.instance_of?(Article) }.count(true)

个人资料

array.map{ |v| v.instance_of?(Profile) }.count(true)

最简单的解决方案:

您可以使用以下方法简单地检查数组是否包含 Profile 对象:

array = [Profile1, Profile2, Article1]
array.any?(Profile)

文章也类似:

array.any?(Article)

谢谢