2016-09-06 5 views
0

タイトルは音がするかもしれませんが、以下で詳しく説明します。配列オブジェクトに含まれている場合は他のフィールドを取得してください

私は項目が配列オブジェクトに含まれているかどうかを知る必要があります。英語で

[ 
    { id: 12345, name: "Bob", email: "[email protected]" }, 
    ... 
    { id: 13456, name: "job", email: "[email protected]" } 
] 

:このemail存在する場合は、私にtrueになります彼らのid

users = User.all 
users.any?{|u| u.email == "[email protected]"} # true 

を与えます。今、 "12345"というユーザーのidを取得する方法は?注:idはわかりません。

+1

このように 'detect'を使うべきです。' user = users.detect {| u | u.email == '[email protected]'} 'の場合、その電子メールを持つユーザーが見つからなかった場合は' nil'を取得します。ユーザーが見つかった場合は、そのIDを取得するために 'user.id'を使うことができます。 – fanta

+0

@fanta私は 'true'または' false'が必要です。もし本当なら、私のIDを取得してください。 'false'は他のコードを実行します。 – Sylar

+0

'user 'が' nil'ならば 'else'をブロック内で実行します。 – fanta

答えて

0

あなたはActiveRecordのを使用しているように見えるので、電子メールのためのデータベースを照会するために速く、次のようになります。

# returns the user id or nil, if not found 
User.find_by(email: '[email protected]').pluck(:id) 
0

あなたはハッシュの配列を持っている場合は、次のように試すことができます:

arr.map do |h| 
    h[:id] if h[:email] == "[email protected]" 
end.compact 

条件を満たすすべてのハッシュの配列にidの値を返します。

関連する問題