This week, you are building a Rails application to collect an index of free programming books online. You'll work on this application for all three lab days this week. The end goal is an application that allows users to see a list of all the books, register and log in, add new books, edit or remove books they've added, and checkout books.
On the first day, your application should:
- Allow anyone to create a new book entry
- Books have, at a minimum, a title, author, description, and URL
- Allow anyone to update or delete a book entry
- Allow anyone to view the list of books
- Have seed data for books (only a few books are necessary, but it's up to you how many you seed)
On the second day, your application should:
- Associate each book entry with a user
- Have model validations
- Show success and error messages in the view after a book is created, edited, or deleted
- Have basic tests for your book and user models
- allow users to checkout a book
On the third day (today), your application should:
- Allow users to register and login
- Prevent users from creating, editing, or deleting book entries if they are not logged in
- Prevent editing a book unless you are the book entry's creator
- Prevent deleting a book unless you are the book entry's creator
If you finish all of the above, consider some of the following:
- Style your application with your own CSS or Bootstrap.
- Allow users to upload an image for the book with CarrierWave
- Allow some users to be admins. Only admins can edit and delete any book entry.
- Add categories to books and have index pages for each category
- Allow users to change their username and password
- Track clicks on book URLs
- Free Programming Books Online
- Faker gem (note: you don't need to use this, but it is useful and fun for generating seed data!)