2016-10-19 8 views
0

私の配列に値が含まれているかどうかをどうやって調べるか、親切に助言できますか?配列内に値が存在するかどうかを確認するにはどうすればよいですか? - Rails 4

  • 私はuser = User.find(4)attendees配列

ターミナル

user = User.find(4) 
    User Load (1.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 4]] 
=> #<User id: 4, email: "[email protected]"> 


social = Social.find(10) 
    Social Load (0.3ms) SELECT "socials".* FROM "socials" WHERE "socials"."id" = ? LIMIT 1 [["id", 10]] 
=> #<Social id: 10, title: "How to successfully fundraise"> 


attendees = social.attendances 
=> #<ActiveRecord::Associations::CollectionProxy [#<user_id: 10>, #<user_id: 4>, #<user_id: 14>, #<user_id: 9>, #<user_id: 6>]> 

内に存在しているかどうかを確認しようとしている配列attendees = social.attendances

  • を持っています私は以下試してみました:

  • は、私はあなたがあなたのモデルとあなたのIDを持っている場合

    attendees.include?(user_id:4) 
    => false 
    
    attendees.include? "user_id:4" 
    => false 
    

    答えて

    1

    私はこのような何かをするだろう:

    user = User.find(4) 
    social = Social.find(10) 
    
    social.attendances.exists?(user: user) 
    
    +0

    ありがとう@spickermann!これは完全にビューで動作します。あなたがsocial.rbモデルでこれをどのように書くか - これは---------> 'デフに出席? self.attendances.exists?(user:user) end' – ARTLoe

    +0

    これを見つけました!ありがとう@spickemann! (ユーザー:user) end' views/social/show.html.erb '<%if @ social.attending?(current_user)%> #何かをする <% end %> ' – ARTLoe

    2

    これらは同様に

    attendees.include?(user) #always use parentheses with methods like this 
    
    attendees.select {|a| a.id == 4}.present? 
    
    +1

    これが受け入れ答えなければなりません!特に、 '出席者は?(ユーザ)'部分です。 – jvillian

    +0

    私はその論理に賛成できません。ありがとう! –

    2

    を動作するはずの端末が、運に以下を試してみましたあなたができるSQLクエリでチェックを実行したい場合

    User.exists?(4) 
    

    または、あなたがチェックするだけで必要な場合は、通常の配列オブジェクトに、あなたが全体のユーザーオブジェクト

    attendees.include?(user) 
    

    または、単にID

    attendees.find { |attendee| attendee.id == 4 } 
    
    2

    とを必要とする、あなたは次のように書くことができます。

    !!attendees.find_by(user_id: 4) 
    #=> true or false 
    
    あなたはRailsのスタイルでそれを行うにしたい場合は

    、あなたはpresent?使用することができます。

    attendees.find_by(user_id: 4).present? 
    #=> true or false 
    
    +0

    thats非常にjavascripty –

    +0

    @CdotStrifeVII、編集 – Ilya

    +0

    これはちょうど良い観測でした、現在JSの本を読んで –

    関連する問題