Pracuję nad projektem, w którym jestem projektantem baz danych/administratorem w środowisku PostgreSQL. Lider zdecydował się użyć Railsów do logiki aplikacji i zrekrutował programistę Rails.Wywołanie procedur przechowywanych PL/pgSQL z Ruby on Rails
Programista Railsów powiedział, że zazwyczaj programuje cały kod aplikacji i nie lubi braku kontroli, którą daje mu przekazanie mu procedury przechowywanej, i że nigdy nie robił tego w szynach.
Baza danych wykorzystuje dużo dziedziczenia/EERM, więc procedury przechowywane i wyzwalacze znacznie ułatwią jego pracę, oprócz korzyści wynikających z używania proc.
Mam cztery pytania:
1) Jak wywołać PL/PGSQL procedury przechowywanej z Rails bez wartości zwracanej
2) Jak nazywają PL/PGSQL procedury przechowywanej z Rails z pojedynczym zwracana wartość (1 wiersz/1 kolumna)
3) Jak wywołać procedurę przechowywaną pl/pgSQL z Railsów z 1 wierszem wiele wartości zwracanych przez kolumnę.
4) Jak wywołać procedurę przechowywaną w pl/pgSQL z Rails przy użyciu parametru OUT?
Dzięki!
Będziesz mieć zły czas, chyba że może przekonać twojego programistę Railsa do użycia czegoś takiego jak [Sequel] (http://sequel.rubyforge.org). Domyślny Rails ORM (ActiveRecord) nie wierzy, że baza danych powinna zawierać jakąkolwiek logikę i nie rozumie niczego bardziej skomplikowanego niż 'select *' i proste sprzężenia, będziesz walczyć z nim cały czas, jeśli naruszysz konwencje przez używanie "wymyślnych" rzeczy, takich jak wyzwalacze, procedury przechowywane, a nawet przygotowywane wyciągi. –
Tak ... DB i ActiveRecord oparte na procesach i dziedziczeniu poprowadzą Cię prosto na http://thedailywtf.com/ terytorium. Musisz żyć z decyzją, aby przejść do Railsów (i prawdopodobnie jego ORR ActiveRecord) i wyrzucić twój projekt DB przez okno, a następnie zrobić taki, który następuje po koneksjach ActiveRecord (bez głupich rzeczy, takich jak "obce klucze" lub "ograniczenia", kto i tak by ich chciał?). Ewentualnie zmień decyzję i sprawdź, czy jako notatki Mu możesz uzyskać przynajmniej przy użyciu zdrowej ORM. –