2014-05-12 2 views
0

J'utilise Ruby on Rails 4 et dans un contrôleur my RESTful je voudrais gérer plusieurs comportements pour chaque action du contrôleur en fonction de la présence de paramètres soumis. Je pense que je peux éviter de créer un nouveau contrôleur car, malgré la présence de paramètres, les comportements mentionnés utilisent et ont des effets sur le même modèle (c'est-à-dire sur la même table de base de données) et/.Comment gérer plusieurs comportements pour les actions du contrôleur en fonction des paramètres soumis?

Afin de gérer plusieurs comportements pour une même action de contrôleur ma solution proposée est que je peux soumettre un paramètre « routeur » comme behavior=1, behavior=2, ... behavior=N de sorte que, par exemple, lorsque ma demande reçoit une demande le paramètre behavior=1 puis les données renvoyées est différent de quand il reçoit behavior=2 ou behavior=N. Cela étant, cependant, la mise en œuvre du contrôleur pourrait entraîner un code plus difficile à maintenir.

Que conseillez-vous? Comment puis-je/devrais-je gérer le «cas de comportements multiples»? Quelles sont les techniques et pratiques communes? Devrais-je créer un contrôleur "dédié" ou puis-je utiliser le même contrôleur que celui proposé ci-dessus?

+0

OK, vous ne voulez pas beaucoup de contrôleurs, mais pourquoi pas beaucoup d'actions? –

+0

Une méthode géante qui gère de nombreux cas différents semble être quelque chose à éviter. –

+0

@Uri Agassi - Je n'ai pas dit que je ne veux pas beaucoup de contrôleurs, même de nombreuses actions. – user502052

Répondre

0

Que diriez-vous de quelque chose comme ceci?

def some_controller_action 
    case params[:behavior] 
    when 1 
    # something for when behavior = 1 
    when 2 
    when 3 
    when 4 
    else 
    end 
end 
+0

Comme proposé dans la question elle-même, c'est ce à quoi je pense. Cela étant, cependant, la mise en œuvre du contrôleur pourrait entraîner un code plus difficile à maintenir. Ainsi j'ai posté les dernières sous-questions? – user502052

+0

C'est mon opinion personnelle, mais séparer chaque affaire d'une action de contrôleur semble être une exagération. Vous pouvez potentiellement créer une méthode de modèle qui encapsule une certaine logique, mais en grande partie, je pense que c'est bien. –

Questions connexes