У вас есть этот код:
return false if wh.each do |wh|
wh.position_id != session[:position_id]
end
Это не будет работать так, как вы хотите.В ruby .each выполнит «блок» (код между do / end) и вернет вам исходный массив.
Так что, если массив является пустым или нет, вы говорите:
return false if []
ruby не вернет false.вместо этого вы, скорее всего, предпочтете:
return false if wh.any? {|wh| wh.position_id != session[:position_id] }
Возможно, вы захотите, чтобы он возвращал true, если позиция является позицией сессии, поэтому вы можете переключиться на:
return wh.any?{|wh| wh.position_id == session[:position_id] }