2015-12-04 2 views
-2

У меня есть массив как это:Как проверить, находится ли объект в массиве?

[#<Merit::Badge id: 1, name: "just-registered", level: nil, description: nil, custom_fields: nil>, 
#<Merit::Badge id: 2, name: "change-username", level: nil, description: nil, custom_fields: nil>] 

Как я могу проверить, если, например, значок ID 2 присутствует в массиве?

+2

Мы не можем ответить на это, если вы не скажете нам, как получить идентификатор объекта. – sawa

ответ

3

Если эта модель, загруженная в другом объекте - просто array.include?(badge), если нет - array.any?{|b| b.id==2 } (но не жёстко идентификатор)

+1

Rails также предоставляет метод '' in? '(Http://api.rubyonrails.org/classes/Object.html#method-i-in-3F):' badge.in? (Array) ' – Stefan

0

Предположим, что ваш массив merits, решение должно быть:

merits.index { |obj| obj.id == 2 }.nil? 

Эта строка кода выше проверки, если идентификатор 2 НЕ присутствует в массиве. Пожалуйста see here для получения более подробной информации о API

0

вы можете попробовать для active record модели Merit::Badge.

Merit::Badge.exists?(badge.id) 

Для вашего случая значок ID 2

Merit::Badge.exists?(2) 

Более подробную информацию о exists? вы можете обратиться: exists?

0
found_object = merge_barge_list.find{|merit_badge| merit_badge.id == 2} 
if found_object 
    # object found 
else 
    # object not found 
end 
Смежные вопросы