Dalam MVC, patutkah pengesahan diletakkan dalam Pengawal atau Model?
怪我咯
怪我咯 2017-05-16 17:06:36
0
3
495

Saya seorang pembangun bahagian hadapan dan saya baru mula menulis tentang bahagian belakang Soalan ini agak mengelirukan. Adakah lebih baik untuk memasukkannya ke dalam Model dan mengembalikan kod status yang berbeza melalui Model untuk panggilan oleh pengawal yang berbeza? Jom kongsi pengalaman. Dilampirkan dua pautan berkaitan:

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

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

membalas semua(3)
巴扎黑

Saya pernah mempunyai keraguan yang sama Malah, semua orang juga mengatakan bahawa pengawal nipis adalah model yang gemuk, tetapi mengapa pengawal nipis mesti menjadi model yang gemuk. t model gemuk melanggar kami prinsip reka bentuk?

Jadi untuk masalah ini, penyelesaian saya adalah, memandangkan kita ingin menurunkan berat badan, maka semua orang harus menurunkan berat badan, pengawal nipis + lapisan pengesahan model nipis (saya panggil model_service) + model nipis, dalam kes ini, walaupun beberapa pengawal digunakan semula Lapisan pengesahan tidak menjadi masalah, dan model masih merupakan tambahan asas, pemadaman, pengubahsuaian dan semakan, dan model ini akan menjadi lebih fleksibel Sebagai contoh, masalah biasa ialah satu model merujuk kepada penambahan, pemadaman, pengubahsuaian dan semak model lain, dan ia juga boleh digunakan semula secara terus

Sebenarnya, lapisan adalah idea Ia tidak bermakna bahawa lapisan mesti mengikut pelan tertentu, lebih baik untuk tidak menggunakan idea lapisan, tidak kira sama ada ia adalah mvc atau smvc yang mana lebih baik bergantung pada cara anda berfikir tentang cara program anda berlapis Mungkin anda telah menghasilkan reka bentuk berlapis xxxmvc untuk kemudahan, ingat bahawa mesti ada pertimbangan reka bentuk yang boleh menambah lapisan .

Saya masih ingat sepertinya ada pepatah popular di Internet "Sebarang masalah dalam bidang sains komputer boleh diselesaikan dengan menambahkan lapisan tengah tidak langsung", jadi anda akan melihat banyak konsep yang serupa: proksi, cache, cgi, kilang mod, dsb. Malah terdapat konsep yang dipanggil "lapisan tengah", jadi apabila anda berfikir bahawa adalah baik untuk meletakkannya dalam mana-mana dua lapisan yang berkaitan, anda boleh memikirkan sama ada lebih baik untuk mempunyai lapisan tengah?

给我你的怀抱

Menurut pengalaman rel saya, lebih baik menulisnya dalam model

Ada pepatah tentang model gemuk dan pengawal nipis di rel
Contoh rel:

Model orang mengesahkan medan nama_pertama, nama_akhir

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

Sila rujuk API Pengesahan Kacang JSR-303 Selain itu, perpustakaan balang pengesahan hibernate juga memanjangkan standard pengesahan, yang juga ditulis dalam model dan menggunakan anotasi.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan