Active_Hash ist ein Juwel, das Daten verarbeiten kann, ohne sie in der Datenbank zu speichern, indem unveränderte Daten wie Präfekturname und Kategorieauswahl direkt in der Modelldatei beschrieben werden. Mit Active_Hash können Sie die ActiveRecord-Methode für die unveränderten Daten verwenden, die direkt in der Modelldatei beschrieben werden.
Beschreiben Sie Folgendes in der Gem-Datei. Führen Sie dann die Bundle-Installation mit dem Befehl aus.
gemfile
gem 'active_hash'
Dieses Mal erstellen wir ein Post-Modell und ein Kategoriemodell. Erstellen Sie das Post-Modell wie gewohnt.
rails g model post
Verwenden Sie die Option "--skip-Migration", wenn Sie ein Kategoriemodell erstellen. Verwenden Sie "--skip-Migration", um zu verhindern, dass die Migrationsdatei generiert wird. Dieses Mal erstellen wir keine Migrationsdatei, da wir die Kategoriedaten nicht in der Datenbank speichern.
rails g model category --skip-migration
Definieren Sie die Category-Klasse in category.rb und erben Sie von der ActiveHash :: Base-Klasse. Durch das Erben von ActiveHash :: Base können ActiveRecord-Methoden für die im Kategoriemodell definierten Objekte verwendet werden.
app/models/genre.rb
class Category < ActiveHash::Base
self.data = [
{ id: 1, name: '---' },
{ id: 2, name: 'Lotion' },
{ id: 3, name: 'Emulsion' },
{ id: 4, name: 'Alles in einem' },
{ id: 5, name: 'Reinigung' },
{ id: 6, name: 'Gesichtswäsche' },
{ id: 7, name: 'Sonnenschutz' },
{ id: 8, name: 'Lippe' },
{ id: 9, name: 'Parfüm' },
{ id: 10, name: 'Haarfarbe' },
{ id: 11, name: 'Haar Styling' },
{ id: 12, name: 'Shampoo Conditioner' },
{ id: 13, name: 'Kontaktlinse' }
]
end
Die Daten werden in Form eines Hashs in einem Array gespeichert.
Erstellen Sie eine category_id-Spalte in der Posts-Tabelle. Es ist _id, weil es die der ID zugeordnete Kategorie abruft und die ID der Kategorie in der Posts-Tabelle speichert. Der Spaltentyp sollte ** Integer-Typ ** sein.
db/migrate/20XXXXXXXXXXXX_create_articles.rb
~Abkürzung~
t.integer :category_id, null: false
~Abkürzung~
ActiveHash bietet eine Gehorsam_zu_Aktiv_Hash-Methode. Wenn Sie eine Zuordnung für ein mit ActiveHash erstelltes Modell einrichten möchten, verwenden Sie die Methode includes_to_active_hash. Sie können die Methode includes_to_active_hash verwenden, indem Sie ActiveHash :: Associations :: ActiveRecordExtensions schreiben.
app/models/post.rb
class Post < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :category
end
Dieses Mal werden die Daten im Pulldown-Format angezeigt. Verwenden Sie daher die Methode collection_select, um sie anzuzeigen.
<%= form.collection_select(Spaltenname, der gespeichert werden soll,Array von Objekten,In Spalten gespeicherte Elemente(Name der DB-Spalte, auf die bei der Anzeige verwiesen werden soll),Spaltenname wird in den Optionen angezeigt,Möglichkeit,HTML-Option(Klasse usw.)) %>
ruby:app/views/posts/new.html.erb
<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:”category-select"}) %>
https://github.com/zilkey/active_hash
Recommended Posts