I have two models, Show and Episode. I need to get the first unrelased or the last released episode of each Show saved in the database. I use the following method but it's terrible slow (650ms~). Have you any idea to how speed up it? (episode.rb)
def last_episodes(status)
[].tap { |e|
Show.all(status: status).each { |show|
episodes = Episode.all show_name: show.name
released = episodes.select { |e| e.complete? }
unreleased = episodes.select { |e| not e.complete? }
e << (unreleased.empty? ? released.last : unreleased.first)
}
}
end