Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: aktualizacja widoku po zmianie kolumn w bazie

Witam,

jestem całkowicie zielony jeśli chodzi o RoR, przesiadka z PHP na RoR to mocne przeżycie ....

mam następujące pytanie:

czy istnieje możliwość automagicznego aktualizowania widoków po zmianie struktury bazy?

wykonałem następujące czynności wg recepty:
1. generate scaffold land nazwa_id:string nazwa_long:string parent:integer pos_x:integer pos_y:integer pos_z:integer
2. rake db:migrate

no i wszytko (edit, new, index, show) działa jak w podręczniku ....

następnie pojawia się konieczność zmiany struktury bazy, tj. dodanie nowej kolumny

1. generate migration AddOwnerToLand owner:integer
2. rake db:migrate

baza ładnie się zaktualizowała

ale czy jest zaklęcie dla rake aby zaktualizował pliki *.html.erb czy muszę to robić ręcznie ?

pozdrawiam
Marek

PS

moje eksperymenty ze rake doprowadziły do tego że w new.html.erb mam tylko klawisz Create ... ;)
Marcin Urbański

Marcin Urbański Ruby Developer

Temat: aktualizacja widoku po zmianie kolumn w bazie

Automatycznie po wygenerowaniu scaffoldu raczej nie da rady (przynajmniej ja się nie spotkałem z podobnym taskiem).
Ale zawsze możesz zastosować scaffold dynamiczny.

Rzuć okiem na te rozwiązania:
http://railscasts.com/episodes/184-formtastic-part-1
http://activescaffold.com/

konto usunięte

Temat: aktualizacja widoku po zmianie kolumn w bazie

Marcin Urbański:
Automatycznie po wygenerowaniu scaffoldu raczej nie da rady (przynajmniej ja się nie spotkałem z podobnym taskiem).

Jeśli nie modyfikowałeś poprzedniego scaffoldu, to po prostu go usuń i stwórz nowy.
Ale zawsze możesz zastosować scaffold dynamiczny.

Rzuć okiem na te rozwiązania:
http://railscasts.com/episodes/184-formtastic-part-1
http://activescaffold.com/

To są raczej zabawki dla bardziej doświadczonych programistów ROR. Jest tam dużo magii (szczególnie w activescaffold), która pod spodem robi wiele rzeczy, których początkujący może nie rozumieć. Lepiej zacząć od robienia rzeczy podstawowych i stopniowo wspinać si na coraz to wyższe poziomy abstrakcji ;)
Inna sprawa to taka, że narzędzie takie jak scaffold bardzo ułatwiają pracę nad trywialnymi zadaniami, przy rzeczach nieco bardziej złożonych mogą bardo skomplikować sprawę. Dlatego lepiej unikać takich rozwiązań.
Marek G.

Marek G. Architekt
Społeczności
Internetowych;
filozofia,
medytac...

Temat: aktualizacja widoku po zmianie kolumn w bazie

Łukasz Bandzarewicz:
Inna sprawa to taka, że narzędzie takie jak scaffold bardzo ułatwiają pracę nad trywialnymi zadaniami, przy rzeczach nieco bardziej złożonych mogą bardo skomplikować sprawę. Dlatego lepiej unikać takich rozwiązań.

proszę rozwiń tą myśl
Marcin Urbański

Marcin Urbański Ruby Developer

Temat: aktualizacja widoku po zmianie kolumn w bazie

Łukasz Bandzarewicz:
Jeśli nie modyfikowałeś poprzedniego scaffoldu, to po prostu go usuń i stwórz nowy.
Słuszna uwaga - na to nie wpadłem:)
Przypomniało mi się jeszcze, że w kontrolerze można wstawić
scaffold :model
Ale nie dam sobie ręki uciąć, czy to działa z nowymi railsami.
To są raczej zabawki dla bardziej doświadczonych programistów ROR. Jest tam dużo magii (szczególnie w activescaffold), która pod spodem robi wiele rzeczy, których początkujący może nie rozumieć. Lepiej zacząć od robienia rzeczy podstawowych i stopniowo wspinać si na coraz to wyższe poziomy abstrakcji ;)
Inna sprawa to taka, że narzędzie takie jak scaffold bardzo ułatwiają pracę nad trywialnymi zadaniami, przy rzeczach nieco bardziej złożonych mogą bardo skomplikować sprawę. Dlatego lepiej unikać takich rozwiązań.

To prawda. ActiveScaffold jest ciekawym rozwiązaniem dla szybkich montaży dla relatywnie prostych modeli i relacji (np. banalnych słowników miejscowości, kolorów, itp.), ale początkujący może czuć się zagubiony. Sam swego czasu zmontowałem w jednej aplikacji interfejs do wprowadzania zamówień w oparciu o ActiveScaffold:) Był to system zamknięty i korzystała z tego interfejsu jedna kobitka, więc mogłem sobie na to pozwolić - w dodatku zmontowałem to w zaledwie kilka godzin. Dopóki zamówienia były proste, scaffold spisywał się znakomicie i był 'good enough'. Jednak po jakimś czasie zmieniły się nieco wymagania i musiałem dodać kilka bajerów przy wprowadzaniu rekordów. Pogrzebałem w dokumentacji, poczytałem źródła ActiveScaffold, zmontowałem kilka paskudnych hack`ów i użytkownicy dostali co chcieli. Zrobiłem to szybko i w miarę bezboleśnie. Niestety z każdym kolejnym wymaganiem nakłady czasu na montowanie hack`ów dla AS były coraz większe i scaffold zamiast mi pomagać był kulą u nogi. Wywaliłem go i zmontowałem 'ręcznie' kod formularzy i widoków.

Podsumowując: scaffold jest świetny dla prostych modeli - gdzie masz ze 3-5 pól w bazie danych. Osobiście chętnie stosuję go do interfejsów słowników. Klepiąc może z 10 linijek kodu w kontrolerze dostajesz prawie za free w pełni funkcjonalny CRUD. Natomiast tak jak mówi Łukasz - nie nadaje się zupełnie do bardziej wyrafinowanych zastosowań. We fragmentach systemu które mogą się często zmieniać, w pewnym momencie znudzi Ci się hack`owanie AS i szukanie obejść;) Większą elastyczność (w krótszym czasie) uzyskasz klepiąc 'ręcznie' templatki.

Pozdrawiam:)

konto usunięte

Temat: aktualizacja widoku po zmianie kolumn w bazie

Marek Górny:
Łukasz Bandzarewicz:

Inna sprawa to taka, że narzędzie takie jak scaffold bardzo ułatwiają pracę nad trywialnymi zadaniami, przy rzeczach nieco bardziej złożonych mogą bardo skomplikować sprawę. Dlatego lepiej unikać takich rozwiązań.

proszę rozwiń tą myśl

Prosta sprawa: narzędzia do automatycznego generowania kodu/formularzy itp. sprawdzają się przy rozwiązywaniu standardowych problemów: dodaj, edytuj, usuń i przeglądaj, czyli po prostu CRUDy ;)
Problemy mogą się pojawić jeśli chcesz zrobić coś bardziej niestandardowego.

Następna dyskusja:

Aktualizacja rekordu w bazi...




Wyślij zaproszenie do