- belongs_to
category(req) - has_many
variations - name (req)
- Product name (textfield)
- Category (select)
- Name
- Category
- Edit (button)
- Delete (button)
- Variations (button)
- has_many
options - has_many
products
- belongs_to
product - belongs_to
categorythruproduct - has_many
optionsthrucategory.metadatum - quantity (int)
- price (
moneyordecimal) - image (file)
- one select for each metadatum (required fields)
- quantity (text)
- price (text)
- image (upload)