如何检查 Ruby 中的数组中是否存在模型
How to check if a model is present in an Array in Ruby
我有一个数组,里面的元素是 2 个模型的混合:Article
和 Profile
。
有没有办法检查数组中是否有Article
and/or Profile
模型?我看到的函数 include?
适用于特定元素,而不是它们的 class.
示例:
鉴于 [Profile1, Profile2, Article1]
我想检查那里是否有 Article
或 Profile
。我只能检查是否有一个名为 Profile1
.
的元素
如有任何帮助,我们将不胜感激!谢谢!
您可以使用方法any? with the method is_a?
这里有一个方法可以知道数组中是否有 Article
或 Profile
。
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)
谢谢
我有一个数组,里面的元素是 2 个模型的混合:Article
和 Profile
。
有没有办法检查数组中是否有Article
and/or Profile
模型?我看到的函数 include?
适用于特定元素,而不是它们的 class.
示例:
鉴于 [Profile1, Profile2, Article1]
我想检查那里是否有 Article
或 Profile
。我只能检查是否有一个名为 Profile1
.
如有任何帮助,我们将不胜感激!谢谢!
您可以使用方法any? with the method is_a?
这里有一个方法可以知道数组中是否有 Article
或 Profile
。
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)
谢谢