GithubHelp home page GithubHelp logo

bsboris / ranked-model-hstore Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brandymint/ranked-model-hstore

0.0 1.0 0.0 70 KB

ranked-model для позиции в hstore

Home Page: http://kiiiosk.ru/

Ruby 100.00%

ranked-model-hstore's Introduction

ranked-model-hstore

Что это такое?

Это вытяжка concern-а отвечающего за сортирову товаров в различных категориях через позицию в hstore применяемыую в проекте http://kiiiosk.ru/

За основу был взят код из модуля https://github.com/mixonic/ranked-model

Что с этим не так?

  1. Плохой код, не используемый повторно.
  2. Многие процедуы не оптимизированы.
  3. Путаница в терминах.

Что ожидаем

  1. Возможность применять concern для других моделей (не только product), указывать название поля для сортировки (category_positions) и scope-поля (by_category_id), в общем сделать модуль которым можно пользоваться и в других проектах.
  2. Минимум SQL запросов при сохранении.
  3. Колбеки при пересортировке (например у нас все товары отражаются в elasticsearch и при массовом изменении позиции необходимо также массово обновлять товары в elastic).
  4. Если товар добавляется в категорию у него автоматически должен появиться порядок. Бывает так, что товар в категорию добавили, но позицию не установили, в итоге это ломает сортировку.
  5. Защита от случаев когда у товаров нет значения сортировки (в этом случае они должны появиться), см предыдующий пункт.
  6. Возможность узнать порядковое значение товара.
  7. Тесты перевести на minitest.

Условия

  • Используем SOLID, делим код на объекты.

FAQ

  • А можно сделать это по другому? Например на plpgsql? - Да, конечно!
  • Почему за пример выбран именно ranked-model а не acts_as_*. - Потому что она не требует пересортировки всех позиций при смене позиции только у одной записи.

С чего начать?

  • Для начала нужно настроить окружение и запустить те тесты что уже есть. Они должны проходить.
  • Разбить задачу на несколько этапов, описать порядок разработки и сроки.

Термины

  • rank - порядковое значение товара (0,1,2,3,4)
  • position - raw-значение позиции в списке (-10000, -5000, 0, 5000, 10000)

См пример:

ranked-model-hstore's People

Contributors

dapi avatar

Watchers

Eugene Likholetov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.