Fix exception in Pool#previous_post_id when the post id is not contained in the pool. This can happen when a post's pool_string lists the post as being in a certain pool, but the post is not included in the pool's post_ids. Such pool_string / post_ids inconsistencies exist because of past bugs.
This commit is contained in:
@@ -268,19 +268,25 @@ class Pool < ApplicationRecord
|
||||
end
|
||||
|
||||
def first_post?(post_id)
|
||||
page_number(post_id) == 1
|
||||
post_id == post_ids.first
|
||||
end
|
||||
|
||||
def last_post?(post_id)
|
||||
post_id == post_ids.last
|
||||
end
|
||||
|
||||
# XXX finds wrong post when the pool contains multiple copies of the same post (#2042).
|
||||
def previous_post_id(post_id)
|
||||
return nil if first_post?(post_id) || !contains?(post_id)
|
||||
|
||||
n = post_ids.index(post_id) - 1
|
||||
return nil if n < 0
|
||||
post_ids[n]
|
||||
end
|
||||
|
||||
def next_post_id(post_id)
|
||||
return nil if last_post?(post_id) || !contains?(post_id)
|
||||
|
||||
n = post_ids.index(post_id) + 1
|
||||
return nil if n >= post_ids.size
|
||||
post_ids[n]
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user