Моделиране на домейни на Rails/ActiveRecord - включват инструкции на продукта като атрибут или техен собствен модел?

Да приемем, че изграждате rails приложение, използвайки postgresql за вашата база данни. Имате продуктов модел и всеки продукт има някои инструкции, които можете да представите като масив от низове, или вътре в продуктовия модел като атрибут, или под някаква форма като негов собствен модел. Коя от долните три опции е "най-добра"?

table "products"
  t.string  "title"
  t.text    "directions", array: true

#  or

table "products"
  t.string   "title"

table "directions"
  t.integer "product_id"
  t.text    "content", array: true

# or

table "products"
  t.string   "title"

table "directions"
  t.integer "product_id"
  t.integer "step"
  t.text    "content"

Това работи добре с опция номер едно, но се чудя дали може да създаде главоболия по-късно по пътя.


person TDB    schedule 29.10.2016    source източник


Отговори (1)


препоръчително е да използвате опция #3 на вашия пример там. някои причини са

1) най-добре е да бъдете прости, когато започвате да пишете приложение, тъй като вашият модел на данни непрекъснато се променя и може да се нуждаете от вашата directions таблица, за да можете да правите независими заявки и лесно да променяте.

2) по-лесен за вас достъп до свързания модел и по двата начина (@product.directions) и (@direction.product).

person sa77    schedule 30.10.2016
comment
Благодаря. Да, това звучи разумно. Единствената причина, поради която се опитах да вкарам указания в атрибут на Recipe, е, че най-вероятно няма да се използва или няма да бъде достъпен от друг модел. Но не знам това със сигурност и независимо от това опция 3 дава най-голяма гъвкавост. - person TDB; 30.10.2016