Я нахожусь в процессе изучения Ruby / Rails. В настоящее время я учусь создавать модель / классы.
У меня есть существующий класс с этими методами
def duration
(start_on..end_on).count
end
def items
space.available_items
end
def available_items
duration >= 365 ? items.not_including_insurance : items
end
В приведенном выше классе у меня есть метод с именем available_items
, который проверяет, превышает ли продолжительность 365 дней, затем элемент не будет включен в массив.
Вместо того, чтобы связывать лог продолжительности c с существующим классом, я думаю, что лучше инкапсулировать его в другой класс, который может принять массив правил для применения к элементам.
Итак вместо этого в вышеприведенном классе в методе available_items
я могу сделать что-то вроде:
policy.apply(items)
, который вернет все элементы, которые удовлетворяют правилам. И в будущем я могу добавлять больше правил и сохранять их гибкость.