When I have array of ids, like
ids = [2,3,5]
and I perform
Comment.find(ids)
everything works fine. But when there is id that doesn't exist, I get an exception. This occurs generaly when I get list of IDs that match some filter and than I do something like
current_user.comments.find(ids)
This time I may have a valid comment ID, which however does not belong to given User, so it is not found and I get an exception.
I've tried find(:all, ids)
, but it returns all of the records.
The only way I can do it now is
current_user.comments.select { |c| ids.include?(c.id) }
But that seems to me like super inefficient solution.
Is there better way to select ID in Array without getting exception on non-existing record?
If it is just avoiding the exception you are worried about, the "find_all_by.." family of functions works without throwing exceptions.
Comment.find_all_by_id([2, 3, 5])
will work even if some of the ids don't exist. This works in the
user.comments.find_all_by_id(potentially_nonexistent_ids)
case as well.
Comment.where(id: [2, 3, 5])