Witam!
Mam kilka pytan odnosnie RoR i ORM.
1.Jak w schema.rb definiowac relacje miedzy bazami (zeby nie robic tego w modelach)
2.Jak wyłączyć koniecznosc nazewnictwa tabel z koncowka “s”? probowal ktos, jak to działa bez tego?
3.Jak zbudowac model całej bazy z pliku schema, jest do tego jakis generator zeby pojedynczo nie tworzyc modelu dla kazdej tabeli?
[quote=awesome]Witam!
Mam kilka pytan odnosnie RoR i ORM.
1.Jak w schema.rb definiowac relacje miedzy bazami (zeby nie robic tego w modelach)[/quote]
Czy chodzi ci o np. o klucze obce, które wiążą tabele z różnych baz danych?
Jest to w ogóle możliwe?
Wydaje mi się, ze pomyliłeś pojęcie schematu z bazą danych.
Konwencja nazewnictwa w RoR zakłada, że tabele są angielskimi rzeczownikami w liczbie mnogiej.. i słusznie ![]()
Klasa modelu odzwierciedla tabelę, instancja - wiersz w tabeli, tabela pisana jest liczbą mnogą, ponieważ przechowuje wiele rekordów (obiektów).
Oczywiście domyślne zachowanie RoR-a można przeciążyć: ActiveRecord::Base
Do tego najlepiej użyć migracji. Z pisaniem modeli nie ma problemu, bo w najprostszym przypadku będzie to jedna linijka kodu: “class User < ActiveRecord::Base; end”
ps.
Przed przystąpieniem do prac z RoR-em polecam książkę: http://helion.pl/ksiazki/agilep.htm
[quote=awesome]Witam!
1.Jak w schema.rb definiowac relacje miedzy bazami (zeby nie robic tego w modelach)[/quote]
Może ten link Ci pomoże: http://weblog.jamisbuck.org/2005/9/27/getting-started-with-activerecord-migrations
edit: bardziej chyba ten: http://magicmodels.rubyforge.org/magic_model_generator/
Między bazami, czy między tabelami?
Poza tym - nie da się pominąć definiowanie tego w modelu, bo nie ma mechanizmu automatycznie wykrywającego “relacje” (poprawnie - związki) pomiędzy modelami.
A dlaczego chcesz to wyłączyć? Używasz polskich nazw (dla zmiennych, modeli, etc.)? IMHO jedna z najgorszych praktyk programistycznych. Taka jest konwencja w RoR, ze nazwy tabel i związków z krotnością “wiele” są w liczbie mnogiej i ma to sens.
Jeśli masz jednak już jakąś bazę danych, której nie możesz dostosować do konwencji RoR, to możesz skorzystać z makra
set_table_name w pliku modelu.
Próbowałem coś znaleźć, ale nie udało mi się nic sensownego. Były raczej próby w drugą stronę - mając model (bez migracji) wygenerować schemat, ale generowanie modelu na podstawie schematu - chyba nie. Tym bardziej byłoby to trudne, jeśli baza danych nie jest stworzona w konwencji Rails (a głównie w takim wypadku ma to sens).
Edit: trochę się spóźniłem
Ale tak jak pisałem - ten plugin magic_migration działa w pełni poprawnie jedynie dla tabel, które są zgodne z konwencjami railsowymi, choć i tak może zaoszczędzić nieco czasu.