Disons que nous avons une méthode dans un modèle quiUne méthode de modèle devrait-elle appeler 'save' elle-même?
- a besoin d'appeler uniquement sur les enregistrements sauvegardés
- peut mettre à jour le modèle lui-même et donc le modèle doit être enregistré à nouveau postfaces
Les appels "save" doivent-ils se produire à l'intérieur de la méthode elle-même, comme le code suivant
def result
save! if new_record?
# do some funky stuff here that may also change the model state
# ...
# And calculate the return value
search_result = "foo" # Let's say "foo" is the value we calculated
save! if changed?
search_result # return
end
Ou l'observateur externe (e e contrôleur) être responsable de l'appel en cas de besoin?
En quelque sorte question connexe: http://stackoverflow.com/questions/3125198/should-a-modifying-class-method-save-itself-or-be-explicity-called-after-the-meth –
Cette présentation sur Le test pourrait être en mesure de vous aider à déterminer où l'interface de ce modèle devient bizarre. https://github.com/jimweirich/presentation_testing_why_dont_we_do_it_like_this/raw/master/pdf/testing.key.pdf Si vous avez l'impression que vous devez appuyer sur la touche db lorsque vous testez votre application, il y a probablement des fonctionnalités qui peuvent être factorisé qui rendra l'architecture plus facile à utiliser. Commencez autour de pg. 69. –
Je ne sais pas comment il se rapporte réellement à la question mais excellente présentation néanmoins - merci pour le partage! –