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 ...
Es wurde so.
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.
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. ⚠︎
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 ...