Filtern eines verschachtelten Arrays basierend auf Modell

  • Ich habe ein verschachteltes Array und möchte die Einträge entfernen, die den Informationen in meinem Modell entsprechen.

    Mein Array sieht ungefähr so ​​aus:

     [{"id"=>"72157627540544488", "primary"=>"6090588224", "photos"=>"49", "videos"=>0, "title"=>"Title1", "description"=>""},
    {"id"=>"72157627309708150", "primary"=>"5987891163", "photos"=>"49", "videos"=>0, "title"=>"Title2", "description"=>""},
    {"id"=>"72157626646787712", "primary"=>"5687687064", "photos"=>"11", "videos"=>0, "title"=>"Title3", "description"=>""},
    {"id"=>"72157626646672290", "primary"=>"5687629990", "photos"=>"33", "videos"=>0, "title"=>"Title4", "description"=>""}] 
     

    Und mein Modell:

     id               :integer         not null, primary key
    name             :string(255)
    set_id           :integer
    thumb_url        :string(255)
    created_at       :datetime
    updated_at       :datetime
     

    Ich versuche, alle Elemente aus dem Array zu entfernen, bei denen der Wert von id in einem der set_id in meinem Modell vorhanden ist.

    22 November 2011
    Holger JustNullVoxPopuli
1 answer
  • Sie können Folgendes tun:

     array.reject{|element| Model.exists?(:set_id => element['id'])}
     

    wobei Array das Array und Model das Array ist Modellklasse. Dadurch wird ein neues Array mit den Elementen mit entfernten doppelten IDs zurückgegeben.

    Array.reject gibt eine Kopie des Arrays ohne die Elemente zurück, bei denen der übergebene Block true zurückgibt.

    ActiveRecord.exists? gibt den Wert "true" zurück Wenn ein Modell mit den angegebenen Bedingungen in der Datenbank vorhanden ist.

    22 November 2011
    aubreyrhodes