<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _on_decisions_event(self, event=None, **kwargs):
 """Called when an Event is received on the decisions channel. Saves the value in group_decisions. If num_subperiods is None, immediately broadcasts the event back out on the group_decisions channel. """

        if not self.ran_ready_function:
            logger.warning('ignoring decision from {} before when_all_players_ready: {}'.format(event.participant.code, event.value))
            return
        with track('_on_decisions_event'):
            self.group_decisions[event.participant.code] = event.value
            self._group_decisions_updated = True
            self.save(update_fields=['group_decisions', '_group_decisions_updated'])
            if not self.num_subperiods() and not self.rate_limit():
                self.send('group_decisions', self.group_decisions)