[RUBY] Tabellenentwurf (mit Active Hash)

Überblick

Dieses Mal habe ich die Tabelle entworfen, um eine Klon-Site für die Furima-App zu erstellen. Da ich es zum ersten Mal selbst mache, ist die Qualität des Tischdesigns noch unklar, aber bitte übersehen Sie es vorerst als Ausgabe ...

ER-Diagramm

Es wurde so. テーブル設計.png

Der Punkt besteht darin, eine Datei mit Active Hash für das Teil vorzubereiten, das aus den vorhandenen Daten ausgewählt werden soll. Der Zustand des Produkts, die Präfektur des Lieferortes zum Zeitpunkt des Kaufs usw. In Bezug auf die Präfekturentabelle (active_hash), die die Präfektur darstellt, verwenden wir zwei Orte, die Versandquelle und das Ziel.

Verwendung von Active Hash

Installation

Fügen Sie Folgendes in die Gemfile- und Bundle-Installation ein.

Gemfile


gem 'active_hash'

Erstellen Sie nun ein Modell für Active Hash. ⚠︎ Erstellen Sie Ihr eigenes Modell, das ActiveHash :: Base erbt, anstatt es mit Befehlen im Terminal zu erstellen. ⚠︎

Dateibeschreibung

Nehmen wir als Beispiel eine Kategoriedatei.

app/models/category.rb


class Category < ActiveHash::Base
  self.data = [
    {id: 1, name: '---'},{id: 2, name: 'Frauen'},{id: 3, name: 'Herren'},{id: 4, name: 'Baby / Kinder'},{id: 5, name: 'Innenraum / Haus / Zubehör'},{id: 6, name: 'Bücher / Musik / Spiele'},{id: 7, name: 'Spielzeug, Hobbyartikel'},{id: 8, name: 'Haushaltsgeräte, Smartphones, Kameras'},{id: 9, name: 'Sport, Freizeit'},{id: 10, name: 'Handgemacht'},{id: 11, name: 'Andere'}
  ]
end

README

Darüber hinaus lautet die README-Datei der Tabelle und der Zuordnung, die dieses Mal erstellt wurden, wie folgt.

README.md


#Tischgestaltung

##Benutzertabelle
| Column      | Type   | Options     |
| ----------- | ------ | ----------- |
| nickname    | string | null: false |
| email       | string | null: false |
| password    | string | null: false |
| first_name  | string | null: false |
| family_name | string | null: false |
| read_first  | string | null: false |
| read_family | string | null: false |
| birth       | date   | null: false |

### Association

- has_many :products
- has_many :item_purchases
- has_many :comments

##Produkttabelle
| Column              | Type       | Options     |
| ------------------- | ---------- | ----------- |
| photo               | text       | null: false |
| name                | string     | null: false |
| explanation         | text       | null: false |
| category            | integer    | null: false |
| condition           | integer    | null: false |
| postage_type        | integer    | null: false |
| prefectures         | integer    | null: false |
| preparation_days    | integer    | null: false |
| value               | integar    | null: false |
| user                | references | null: false | 


### Association

- belongs_to :user
- has_one :item_purchase
- has_many :comments
- belongs_to_active_hash :category
- belongs_to_active_hash :condition
- belongs_to_active_hash :postage_type
- belongs_to_active_hash :prefectures
- belongs_to_active_hash :preparation_days
- belongs_to :seller, class_name: "User"


## item_Kauftabelle
| Column        | Type    | Options                        |
| ------------- | ------- | ------------------------------ |
| product       | integer | null: false, foreign_key: true |
| user          | integer | null: false, foreign_key: true |
| purchase_info | integer | null: false, foreign_key: true |

### Association

- belongs_to :user
- belongs_to :product
- belongs_to :purchase_info


##Kommentartabelle
| Column  | Type       | Options                        |
| ------- | ---------- | ------------------------------ |
| content | string     | null: false                    |
| user    | integer    | null: false, foreign_key: true |
| product | integer    | null: false, foreign_key: true |

### Association

- belongs_to :product
- belongs_to :user

## purchase_Infotabelle

| Column        | Type       | Options                        |
| ------------- | ---------- | ------------------------------ |
| postal_code   | string     | null: false                    |
| prefectures   | integer    | null: false, foreign_key: true |
| city          | string     | null: false                    |
| address       | string     | null: false                    |
| building_name | string     |                                |
| phone_number  | string     | null: false                    |
| item_purchase | integer    | null: false, foreign_key: true |

### Association

- has_one_active_hash :prefectures
- has_one :item_purchase

Beachten Sie hier die Abhängigkeit zwischen has_one und Gehört dazu.

Wenn Sie einen externen Schlüssel benötigen, müssen Sie eine Verknüpfung mit Gehör_zu haben.

Last but not least hat die erste Selbstimplementierung viel Zeit in Anspruch genommen, aber es hat Spaß gemacht. Allerdings hat es heute ungefähr 10 Stunden gedauert, also werde ich mein Bestes geben, um nicht frustriert zu sein ...

Recommended Posts

Tabellenentwurf (mit Active Hash)
[Rails] Über aktiven Hash
[Rails] Einführung von Active Hash
Verwendung von Active Hash
Die Fallstricke von Active Hash
gem active_hash Über aktiven Hash
Ich habe versucht, Active Hash zu erklären