Standard CRUD



my buddy and i have created a Standard CRUD (SCRUD) spec that we'd
like to use across projects and frameworks

before we get totally dependent on the pattern, I want to make sure
there's not some better solution out there, or some ideas that will
improve the design

below is the spec we came up with:

SCRUD (Standard CRUD)


Standard CRUD is a design pattern for:

* displaying a single instance
* displaying a filterable list of instances

* displaying a form to create a new single instance
* actually creating a new single instance

* displaying a form to update a single instance
* actually updating a single instance

* displaying a form to delete a single instance
* actually deleting a single instance

* displaying a form to perform a bulk insert
* actually performing a bulk insert

* displaying a form to perform a bulk update
* actually performing a bulk update

* displaying a form to perform a bulk delete
* actually performing a bulk delete

The intention is that all methods supported by the model will have
a consistent Class Method Interface - for example any model that
supports bulk insert will have a standard class method to support this

Important Considerations

* SCRUD should work the same in an ajax context as well as in a
traditional page submit
* SCRUD state changing methods should be easily testable using
twill or some other web testing tool in either an ajax or page

General Design

A method performs one distinct action. For example the act of drawing
an update form is different than the act of actually updating an
instance. This helps to enable testability and use in various

Page Urls

Method URL What it does
GET model/ gets a list of model instances, using
filters like ?key=value1&key=value2

GET model/search displays a search form

GET model/id displays a readonly instance

GET model/edit/id displays an edit form

POST model/update/id updates an instance and redirects

GET model/create displays an insert form

POST model/insert inserts a new record and redirects

POST model/delete/id deletes a record and redirects

GET model/bulk/edit display a bulk edit ui

POST model/bulk/update performs a bulk update and redirect

GET model/bulk/create display a bulk insert form

POST model/bulk/insert performs a bulk insert and redirect

POST model/bulk/delete performs a bulk delete and redirect


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question