Dans MVC, la validation doit-elle être placée dans le contrôleur ou dans le modèle ?
怪我咯
怪我咯 2017-05-16 17:06:36
0
3
492

Je suis un développeur front-end et je viens de commencer à écrire sur le backend. Cette question est assez déroutante. Est-il préférable de le mettre dans le modèle et de renvoyer différents codes d'état via le modèle pour les appels de différents contrôleurs ? Partageons nos expériences. Ci-joint deux liens connexes :

  • http://stackoverflow.com/questions/5305854/best-place-for-validation-in-model-view-controller-model
  • http://ruby-china.org/topics/4005
怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(3)
巴扎黑

J'ai déjà eu des doutes similaires. En fait, tout le monde a également dit qu'un contrôleur fin est un gros modèle, mais pourquoi un contrôleur fin doit-il être un gros modèle ? Un gros modèle ne viole-t-il pas nos principes de conception ?

Donc pour ce problème, ma solution est, puisque nous voulons perdre du poids, alors tout le monde devrait perdre du poids, contrôleur fin + couche de vérification de modèle mince (je l'appelle model_service) + modèle mince, dans ce cas, même si plusieurs contrôleurs sont réutilisés La couche de vérification n'est pas un problème, et le modèle est toujours un ajout, une suppression, une modification et une vérification de base, et ce modèle sera plus flexible. Par exemple, un problème courant est qu'un modèle fait référence à l'ajout, à la suppression, à la modification et à la vérification. vérification d'un autre modèle, et il peut également être réutilisé directement

En fait, la superposition est une idée. Cela ne signifie pas que la superposition doit suivre un certain plan établi. Dans ce cas, il vaut mieux ne pas superposer. Puisque vous avez adopté l'idée de la superposition, cela n'a pas d'importance. c'est mvc ou smvc. Lequel est définitivement le meilleur dépend de la façon dont vous pensez à la façon dont votre programme est superposé. Peut-être avez-vous proposé une conception en couches xxxmvc pour plus de commodité, rappelez-vous qu'il doit y avoir des considérations de conception qui peuvent ajouter des couches. .

Je me souviens qu'il semble y avoir un dicton populaire sur Internet "Tout problème dans le domaine de l'informatique peut être résolu en ajoutant une couche intermédiaire indirecte", vous verrez donc de nombreux concepts similaires : proxy, cache, cgi, usine mode, etc. Il existe même un concept appelé « couche intermédiaire », donc quand vous pensez qu'il est bon de le mettre dans l'une des deux couches liées, vous pouvez vous demander s'il ne serait pas préférable d'avoir une couche intermédiaire ?

给我你的怀抱

D'après mon expérience sur les rails, il vaut mieux l'écrire dans le modèle

Il y a un dicton sur le gros modèle et le contrôleur mince dans les rails
Exemple de rails :

Le modèle de personne valide les champs prénom et nom

class Person
  include ActiveModel::Validations

  attr_accessor :first_name, :last_name

  validates_each :first_name, :last_name do |record, attr, value|
    record.errors.add attr, 'starts with z.' if value.to_s[0] == ?z
  end
end
Ty80

Veuillez vous référer à l'API de validation Bean JSR-303. De plus, la bibliothèque jar hibernate-validation étend également la norme de validation, qui est également écrite dans le modèle et utilise des annotations.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal