Это довольно плотный код, который может быть расширен до:
def available_list_of(entities, exclude: nil)
# why use a case statement if there is only one option?
if entities == :studies
if exclude.nil?
Study.where('id NOT IN (?)', '-1')
else
Study.where('id NOT IN (?)', (exclude.pluck(:study_id) + [-1]))
end
end
end
Какова реальная цель кода, вне моего понимания, хотя, как это можно сделать с помощью области действия:
class Study < ApplicationRecord
def self.excluding(excluded)
excluded.nil? ? self : self.where.not(id: excluded)
end
end
А также, почему ваш типичный столбец id
с автоинкрементом может содержать -1
?