2016-09-22 2 views
-1

Ich frage mich, ob es einen Weg für einen Benutzer auf einer Website gibt, Spalten in eine Tabelle einzufügen.Spalte in vorhandene Tabelle einfügen

Meine Situation ist: Der Administrator möchte jedes Jahr eine Tabellenstruktur definieren. Dann möchte der Administrator, dass Benutzer Daten in diese Tabelle einfügen.

z. auf der Website könnte es wie folgt aussehen: First table Zu einem späteren Zeitpunkt möchte der Administrator eine zusätzliche Spalte zur Tabelle hinzufügen, aber die Daten intakt zu halten. Die Tabelle aussehen würde nun wie folgt aus:

Additional table

Wie können Sie diese Funktion unterbringen? Ich dachte daran, ein Modell mit vielen versteckten Feldern zu erstellen, die der Admin später "einblenden" und benennen könnte, aber ich bin mir nicht sicher, ob das Best Practice ist :).

Alle Ideen, die das lösen könnten, würden sehr geschätzt werden! (Ich bin Codierung in Ruby on Rails, aber ich glaube nicht, die Sprache, in diesem Fall besonders relevant ist)

OXp1845

+0

Siehe die Dokumentation zum ALTER TABLE-Befehl: http://dev.mysql.com/doc/refman/5.7/en/alter-table.html – PaulF

+0

Nicht sicher, ob das funktioniert. Der Benutzer wird zusätzliche Spalten hinzufügen, während er auf der Website ist – OXp1845

+0

Aus Ihrer Frage ist es nicht völlig klar, ob es der Administrator oder der Benutzer ist, der die Spalten hinzufügt? Zuerst fragen Sie, ob es für den Benutzer möglich ist, die Spalte hinzuzufügen - später sagen Sie, dass es der Administrator ist, der es tun wird. Die Spalte kann hinzugefügt werden, wobei der verbleibende Inhalt unverändert bleibt. Je nach Design Ihrer Site müssen die Seiten dann die zusätzlichen Spalten anzeigen und dem Benutzer die Eingabe von Daten ermöglichen. – PaulF

Antwort

3

Ich würde nicht das Einfügen Spalten empfehlen, sondern eine vertikale Attribut Tabelle zu verwenden. Z.B.

admin_tables  
| id | year or any other descriptor you want | 
    1 2015 
    2 2016 

admin_table_columns 
| id | admin_table_id | named_column | 
    1   1    name 
    2   1    description 
    3   1    info1 
    4   1    info2 
    5   2    name 
    6   2    description 
    7   2    info1 
    8   2    info2 
    9   2    info3 

user_inputs 
| id | user_id| admin_table_column_id | data | 
    1  1    1    input for name 
    2  1    2    input for description 
    3  1    4    input for info2 
    .....   

Dies wird der Administrator erlauben, so viele Attribute hinzufügen, wie sie mit heraus zu einem „Tisch“ wollen die vorhandenen Daten oder das Einfügen neue Spalten im Fluge und Modellen zu verändern könnte wie folgt definiert:

class AdminTable < ActiveRecord::Base 
    has_many :admin_table_columns 
    has_many :user_inputs, through: : :admin_table_columns 
end 

class AdminTableColumn < ActiveRecord::Base 
    belongs_to :admin_table 
    has_many :user_inputs 
end 

class UserInput < ActiveRecord::Base 
    belongs_to :admin_table_column 
    belongs_to :user 
end 

Offensichtlich ist dies ein vereinfachtes Beispiel, aber ich denke, es sollte dich auf den richtigen Weg bringen.

+0

Ich denke, das ist der richtige Weg. Vielen Dank für Ihre ausführliche Beschreibung – OXp1845

Verwandte Themen