Ich versuche, Administratoren meiner Webanwendung die Möglichkeit zu geben, einige neue Felder zu einem Modell hinzuzufügen. Das Modell heißt Artwork und ich würde gerne zur Laufzeit eine test_column Spalte hinzufügen. Ich bin gerade am Testen, also habe ich einen einfachen Link hinzugefügt, um das zu tun, es wird natürlich parametrisch sein.
Ich habe es durch Migrationen geschafft:
def test_migration_create
Artwork.add_column :test_column, :integer
flash[:notice] = "Added Column test_column to artworks"
redirect_to :action => 'index'
end
def test_migration_delete
Artwork.remove_column :test_column
flash[:notice] = "Removed column test_column from artworks"
redirect_to :action => 'index'
end
Es funktioniert, die Spalte wird ohne Probleme zur Datenbank hinzugefügt oder aus ihr entfernt. Ich verwende im Moment active_scaffold, so dass ich das Feld test_column im Formular erhalte, ohne etwas hinzuzufügen. Wenn ich jedoch eine Erstellung oder Aktualisierung übermittle, wird die Spalte test_column nicht aktualisiert und bleibt leer. Wenn ich mir die Parameter ansehe, kann ich sehen:
Parameters: {"commit"=>"Update", "authenticity_token"=>"37Bo5pT2jeoXtyY1HgkEdIhglhz8iQL0i3XAx7vu9H4=", "id"=>"62", "record"=>{"number"=>"test_artwork", "author"=>"", "title"=>"Opera di Test", "test_column"=>"TEEST", "year"=>"", "description"=>""}}
der Parameter test_column wird korrekt übergeben. Warum ignoriert active record ihn dann? Ich habe auch versucht, den Server neu zu starten, ohne Erfolg.
Ich verwende Ruby 1.8.7, Rails 2.3.5 und Mongrel mit einer Sqlite3-Datenbank.
Danke