This might seem like a duplicate question, but I can’t find any information on this. I want to show the results from a remotely acquired json array excluding certain results by comparing them to a local table. I have a gallery model with:
t.integer :smugmug_id
t.string :smugmug_key
t.integer :category_id
t.string :category_name
t.string :description
t.integer :highlight_id
t.string :highlight_key
t.string :highlight_type
t.string :keywords
t.string :nicename
t.integer :subcategory_id
t.string :subcategory_name
t.string :title
t.string :url
The data for this model gets populated by a rake task that connects to the smugmug api (json) and stores the data locally. I’m trying to create a view that shows all the smugmug galleries that are not stored locally.
Here’s what I’ve tried so far, but it’s not excluding the locally stored galleries like I thought it would.
def self.not_stored
smugmug_list = Smug::Client.new.albums(heavy = true)
gallery_list = Gallery.select(:smugmug_id)
smugmug_list.each do |smugmug|
smugmug unless gallery_list.include? smugmug.id
end
end
Hopefully this makes sense. I’m getting a json array of galleries, and I want to display that array excluding results where the album id matches the smugmug_id of any of my locally stored records.
Quick edit: I’m using an adaptation of this gem to connect to the smugmug api.
Just use the difference operator.
General Example:
So you would have:
Enumerable#collect will turn the smugmug_list into a list of id’s. From there, you can do the difference operator, which will return all the id’s of all the smugmug galleries that are not stored locally.
Another option to maintain the list of galleries: