Callback hell

Je jouais avec des formulaires imbriqués dynamiques avec Stimulus aujourd’hui et je suis tombé sur un vide laissé par les callbacks ActiveRecord de Rails.

J’ai ce modèle Caregiver dans un formulaire imbriqué et je dois le créer avec une entité User dans mon formulaire, pour pouvoir remplir les champs. Le problème est que créer un callback after_initialize (même avec :new_record?) va casser le comportement général de mon application, et je ne veux pas parcourir toutes les specs et corriger les problèmes de FactoryBot, etc.

J’ai donc simplement décidé de créer une petite méthode dans mon modèle Caregiver :

# ceragiver.rb

def init_with_user
  self.build_user
  self
end

Ensuite, je dois juste l’appeler dans ma vue comme ceci :

<%= f.fields_for :caregivers, caregiver.new.init_with_user, child_index: 'TEMPLATE_RECORD' do |cf| %>
  <%= render 'caregiver_fields', cf: cf %>
<% end %>

Cela rend le code dans ma vue plus simple, plus explicite, tout en évitant le redoutable enfer des callbacks.