Witam was wszystkich, z góry przepraszam jeśli tak owy wątek pojawił się na tym forum.
Mój problem jest następujący:
załóżmy, że mamy gotową bazę danych i mamy pod nią napisać aplikacje opartą o framework Ruby on Rails
Problemem jest fakt, że nie możemy korzystać z Active Record, ponieważ nazewnictwo nie jest spójne z wymogami.
Pojawia się pytanie, czy ktoś z was kiedyś podobny problem i jak go rozwiązać. Domniemam, że pewnie jest jakaś wbudowana klasa, której możemy użyć w modelu i tu prosiłbym was o krótki przykład metody z zabezpieczeniem sql injection
np.
def getAll
self.connection.query(“select * from costam where name=?”,hash[‘cukierki’])
end
Przykład zbudowałem w oparciu mojej wiedzy jak to jest rozwiązane we frameworkach z php, a nie mam pojęcia jak to będzie w rubym…
Za odpowiedź z góry dziękuję.
Pozdriawiam
taki sposób składania conditions (WHERE …) jest najbardziej elastyczny (daje Ci pełną kontrolę nad tym fragmentem SQL), a jednocześnie odporny na SQL injection.
Aha, nie używaj self.connection.query póki nie jest to absolutnie potrzebne – a do selectów nie jest wcale, używaj po prostu .find
to zależy jak bardzo to nazwnictwo nie jest spójne z wymogami, domyślam się że chodziło Ci o wymogi Railsów ? w ActiveRecord jest kilka metod które mogą pomóc, przykładowy model User
class User < ActiveRecord::Base
set_table_name "users_blah"
set_primary_key "username"
end
taki sposób składania conditions (WHERE …) jest najbardziej elastyczny (daje Ci pełną kontrolę nad tym fragmentem SQL), a jednocześnie odporny na SQL injection.
Aha, nie używaj self.connection.query póki nie jest to absolutnie potrzebne – a do selectów nie jest wcale, używaj po prostu .find[/quote]
No wiesz AR jest dobre tylko dla prostych struktur. Po co ja mam się uczyć jakiś zależności has_one itp., gdy zapytanie z joinami napisze szybciej, a czy będzie to php, asp albo ruby to moje dane będę pobierał w analogiczny sposób. AR jest przydatny ale tylko dla typowych przypadków. “Celem AR nie jest ucieczka przed SQL tylko uproszczeniem pracy z RDBMS”. Z czasem, może miałeś doczynienia z dużymi bazami danych, przyjdzie nam z optymalizować zapytania w celu uzuskania większej wydajności, a wtedy nie uciekniesz od kodu SQL. Może ja zaczynam naukę od końca;) ale chce się przekonać czy naprawdę warto poznawać ruby, czy pozostać przy php.
Pewnie, że warto się uczyć Ruby (Rubiego?) zawsze warto się czegoś nowego uczyć. SQLa też warto się uczyć i AR, i migracji itd. Oczywiście możesz wyciągnąć wnioski, że AR czy migracje są do dupy, ale ciężko wyciągnąć jakiekolwiek wnioski skoro tego w ogóle nie znasz. A co do php, pozostając li tylko przy php i nie znając nic innego, robisz sobie nieodwracalną krzywdę (zresztą to się tyczy nie tylko, choć głównie, php).
No akurat znam php, asp czy rubiego poznaje i powiem Ci tak w rubym nie znalazłem niczego czego nie znam z zaawansowanego programowania php wszystko jest oparte o to samo , budowa szablonów, modeli itp. W ogóle przeraża mnie fakt, że otrzymuje odpowiedzi typu AR… tak jakbym tego nie znał… a nie potraficie mi odpowiedzieć na rzeczowo zadane pytanie… czyli dalej prezentujecie poziom podstawowy…
No akurat znam php, asp czy rubiego poznaje i powiem Ci tak w rubym nie znalazłem niczego czego nie znam z zaawansowanego programowania php wszystko jest oparte o to samo , budowa szablonów, modeli itp. W ogóle przeraża mnie fakt, że otrzymuje odpowiedzi typu AR… tak jakbym tego nie znał… a nie potraficie mi odpowiedzieć na rzeczowo zadane pytanie… czyli dalej prezentujecie poziom podstawowy…[/quote]
No ale zobaczmy…
class User < ActiveRecord::Base
set_table_name "users_blah"
set_primary_key "username"
end
I mam mapowanie jakie potrzebuję. Mapowanie relacji też się da zrobić z podaniem kolumn, więc nie ma problemu, co by używać AR. (No ale to już napisano wcześniej).
Zdefinuj mi proszę cóż to są te ‘proste struktury’. Bo jeśli masz pojebaną bazę, to żaden SQL ręcznie pisany nie pomoże i jest koszmar, natomiast z dobrze napisaną bazą to i mapowanie do ORMa da radę zrobić.
PS) i żeby było jasne: nie cierpię ormów, nie lubię railsów, AR i migracji. A jeszcze bardziej nie cierpię jak ktoś zadaje pytanie, dostaje odpowiedzi i nawet ich nie sprawdzi.