Моделирование трекера активов / тикетов в Ruby on Rails - PullRequest
1 голос
/ 20 мая 2011

У меня есть несколько идей для веб-приложений. К сожалению, я очень мало знаю о веб-разработке. Итак, я решил научиться самому, построив пример «реального слова» в виде трекера активов / тикетов после завершения учебника по Ruby on Rails Майкла Хартла . Я выбрал такое приложение, потому что оно мне знакомо, поэтому у меня уже есть представление о том, как оно должно функционировать. Такая система также потребует от меня использования многих функций Rails, поскольку я добавляю функции в свое собственное приложение.

Однако у меня есть несколько вопросов о моделировании:

Компьютеры, принтеры, мониторы, сотовые телефоны - все это тип активов, поэтому все они будут совместно использовать некоторые поля (дата покупки, цена покупки, срок гарантии, примечания), но они также будут иметь некоторые специфические для типа поля, основанные на тип актива. С точки зрения ООП, я бы хотел «подкласс» это. Как мне это сделать в Rails?

Я хочу случайным образом сгенерировать номер актива и тикета; я должен использовать этот номер в качестве первичного ключа элемента, или это плохая практика? При этом я хотел создать простые полезные URL-адреса CRUD.

Жаль, что я могу присудить только один чек за «вопрос»; Я думаю, я выберу лучший общий ответ. Любые идеи приветствуются.

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Вы в основном ищете Single Table Inheritance aka STI, см. Ссылку здесь: http://api.rubyonrails.org/classes/ActiveRecord/Base.html

В двух словах:

Active Record позволяет наследовать по сохраняя имя класса в столбец, который по умолчанию называется «тип» (можно изменить, переписав Base.inheritance_column). Это означает что наследство выглядит так:

Класс Company

класс Фирма <Компания; конец </p>

класс Клиент <Компания; конец </p>

В вашем случае каждое устройство будет наследоваться от модели активов.

0 голосов
/ 15 июня 2011

Это приложение с открытым исходным кодом, над которым я работала с несколькими другими людьми.Это средство отслеживания активов, которое использует полиморфизм для представления активов, оно не полностью раскрыто для того, что вы пытаетесь сделать, но просмотр источника может помочь вам:

https://github.com/mechcow/Asset-Tracker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...