У меня есть следующий обратный вызов before_save:
def clear_unused_parents
if self.parent_type == 'global'
self.sport_id = nil
self.school_id = nil
self.team_id = nil
elsif self.parent_type == 'sport'
self.school_id = nil
self.team_id = nil
elsif self.parent_type == 'school'
self.sport_id = nil
self.team_id = nil
elsif self.parent_type == 'team'
self.sport_id = nil
self.school_id = nil
end
end
По сути, у меня есть модель рекламы, которая может быть глобальной или принадлежать спорту, школе или команде.Приведенный выше код работает для установки поля id в NULL для всех, кроме соответствующего поля.Как я могу написать то же самое, не повторяя себя так много?
Я хотел бы написать что-то подобное, но я не уверен, как это сделать.
def clear_unused_parents
parent_type = self.parent_type
parent_fields = ['sport_id', 'school_id', 'team_id']
parent_fields.each do |parent_field|
unless parent_field == parent_type
parent_field = nil
end
end
end