DEV Community


Posted on

Rails Ecommerce App



  • Using Ruby on Rails for the project
  • Include at least one has_many relationship (x has_many y; e.g. User has_many Recipes)
  • Include at least one belongs_to relationship (x belongs_to y; e.g. Post belongs_to User)
  • Include at least two has_many through relationships (x has_many y through z; e.g. Recipe has_many Items through Ingredients)
  • Include at least one many-to-many relationship (x has_many y through z, y has_many x through z; e.g. Recipe has_many Items through Ingredients, Item has_many Recipes through Ingredients)
  • The "through" part of the has_many through includes at least one user submittable attribute, that is to say, some attribute other than its foreign keys that can be submitted by the app's user (attribute_name e.g. ingredients.quantity)
  • Include reasonable validations for simple model objects (list of model objects with validations e.g. User, Recipe, Ingredient, Item)
  • Include a class level ActiveRecord scope method (model object & class method name and URL to see the working feature e.g. User.most_recipes URL: /users/most_recipes)
  • Include signup (how e.g. Devise)
  • Include login (how e.g. Devise)
  • Include logout (how e.g. Devise)
  • Include third party signup/login (how e.g. Devise/OmniAuth)
  • Include nested resource show or index (URL e.g. users/2/recipes)
  • Include nested resource "new" form (URL e.g. recipes/1/ingredients/new)
  • Include form display of validation errors (form URL e.g. /recipes/new
  • The application is pretty DRY
  • Limited logic in controllers
  • Views use helper methods if appropriate
  • Views use partials if appropriate TLTR: Feel free to get the source code.

App Design
The overall plan for this app was to design a web site with a full-stack design using Rails.

Based on the requirements, the app allows users CRUD functionality across multiple objects involved in a large scale ecommerce marketplace applicaton -departments, categories, products, questions, answers, reviews, tags, carts, lineitems, orders, etc.

Similar to large scale counterparts, it is designed for straightforward use with minimal explanation required for the user.

Omniauth Github authentication has been included for ease of access. See in the roort directory for a list of additional features.

To handle the security of the user model, this app utilizes the bcrypt gem to secure the session_secret.

Data Design
See the schema for more info.

Controller Design
See the controllers folder for more info.

Discussion (0)