Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shybovycha/moo_store
Sample rails shop
https://github.com/shybovycha/moo_store
Last synced: 21 days ago
JSON representation
Sample rails shop
- Host: GitHub
- URL: https://github.com/shybovycha/moo_store
- Owner: shybovycha
- Created: 2013-09-07T15:30:22.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-12-26T16:16:01.000Z (about 11 years ago)
- Last Synced: 2024-11-03T21:58:00.651Z (2 months ago)
- Language: CSS
- Size: 1.06 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
# MooShop
## Brief overview
This is a very simple shop sample, inspired by Magento architecture, Rails-based and Moo-powered.
There are some architecture notes, attached below.## Models
* User
* Product
* ShoppingCart
* Category
* Order
* OrderItem
* Image
* ContactMessage
* Permission
* Role### User model
email, password
first name, last name, gender, birthday, address, phone
has_many :orders
has_one :shopping_cart
has_many_and_belongs_to :role### Permission model
action, model
has_many_and_belongs_to :role
### Role model
title
has_many_and_belongs_to :permissions
has_many_and_belongs_to :user
### Product modeltitle, description, base_price
has_many :images
belongs_to :shopping_cart
has_many_and_belongs_to :category### ShoppingCart model
belongs_to :user
has_many :products### Category model
title
has_many_and_belongs_to :products
### Order model
address, payment_method, status
belongs_to :user
has_many :order_items### OrderItem model
title, price
belongs_to :order
### Image model
has_attachment :picture
belongs_to :product
### ContactMessage model
author_name, author_email, message, status
## Controllers
* pages
* users
* products [Resource]
* categories [Resource]
* orders [Resource]
* backoffice## Notes
### CanCan fix for Rails4
This one prevents exceptions related to Strong Attributes, presented in Rails4, appearing.
# application_controller.rb
before_filter do
resource = controller_name.singularize.to_sym
method = "#{resource}_params"params[resource] &&= send(method) if respond_to?(method, true)
end### Тех. задание
1. Разработать вебсайт в виде интернетмагазина, который позволяет реализовать разнообразные товары через сеть Интернет.
2. Интернетмагазин должен иметь клиентскую часть (frontend) и админпанель (backoffice)
3. Админпанель должна быть закрыта от доступа любыми пользователями, кроме
пользователей с привилегией администратора магазина.
4. Админпанель должна обеспечивать CRUD операции (Create, Read, Update, Delete) для таких
сущностей как:
* товары
* категории товаров
* пользователи магазина
5. Админпанель должна обеспечивать RUD операции (Read, Update, Delete) для таких таких
сущностей, как:
* заказы пользователей
* запросы через форму контактов
6. Клиентская часть интернетмагазина должна иметь следующие страницы или типы страниц:
* [x] стартовая страница*
* [x] страница регистрации новых пользователей *
* [x] страница профиля пользователя
* [x] страница для восстановления забытого пароля *
* [o] страница c формой контактов *
* [x] страница со списком категорий товаров магазина
* [x] страница со списком продуктов в категории магазина, с пейджингом
* [x] страница с подробностями продукта
* [x] страницакорзина, отображающая список выбранных в данной сессии товаров *
* [x] страница оплаты заказа
* [o] страница истории оплаченных заказов пользователя, с пейджингомСтраницы, помеченные *, доступны для всех пользователей, остальные страницы доступны
только аутентифицированным пользователям.
7. При реализации задания обязательно использовать ООП (объектноориентированное
программирование) для таких сущностей, как пользователи, категории продуктов, продукты,
заказы, корзина и т.д.
8. Организовать импорт категорий продуктов и продуктов в магазин из XMLфайла, наличие
которого проверяется в конфигурируемой папке. В структуру XML внести те поля, которые
присутствуют в соответствующих таблицах в базе данных.
9. Организовать экспорт заказов магазина в XMLфайл, записываемый в конфигурируемую папку.
Каждый новый экспорт должен содержать только новые заказы (оплаченные со времени
последнего экспорта). Результирующий XMLфайл должен содержать полную информацию о
заказе (продукты, их количество, общую цену, имя пользователя, оплатившего за