Witam, to mój pierwszy post ale zapewniam że nieostatni =)
Chciałbym się dowiedzieć czy jest możliwość edycji tabeli bazy danych ‘w locie’ sprowokowaną przez np. formularz webowy.
Co mam namyśli :
Użytkownik chce dodać kolumnę ‘dwa’ : string do tabeli ‘liczby’ (Kolumn może być ‘n’ ).
Moja wiedza nie jest powalająca w tym temacie ale czy dało by się to zrobić.
Próbowałem dodać do pliku z migracją metodę:
def dodaj
add_column :dwa, :string
end
następnie wywołać ją w kontrolerze:
czy robisz aplikację która będzie zarządzała strukturą i zawartością bazy danych (np. coś jak PhpMyAdmin)? Jeśli tak, to użyj sterownika do bazy danych a nie ActiveRecord. W przeciwnym wypadku nie rób tego, bo prawie napewno jest to złe. Z technicznej strony – nie widzi Ci tej kolumny bo ActiveRecord nie przeładowuje definicji kolumn tabelek, robi to tylko raz – przy pierwszym odniesieniu się do klasy modelu.
Jak najbardziej oto mi chodziło, cała moja koncepcja się na tym opiera.
Dodaja kolumny np. liczba1 , liczba2, liczba3 , do tabeli liczby mogę się do nich teraz podobierać za pomocą
Liczba.send('liczba'+iterowanaWartosc)
(kod pisany z głowy zapewne niepoprawny).
Dokładnie o taki zabieg mi chodziło.
Zapewne dałoby się zaprojektować taką strukturę bazy żeby to wszystko było super-ekstra znormalizowane bez żadnych ekscentrycznych rozwiązań, ale prawdę mówiąc uczę się Railsa i staram się jak najbardziej skomplikować sobie życie.
To wszystko po to żeby jak najwięcej się nauczyć.
Hmm… mógłbym też dodawać modele zamiast kolumny do bazy , ale nie mam pojęcia jak to robić nie-konsolowo.