Cześć. Proszę, powiedzcie mi w jaki sposób mogę tworzyć swoje zapytania mysql. Bo muszę stworzyć panel użytkownika do pewnej gry poprzez właśnie mysql. Więc proszę powiedzcie mi - jak to wygląda, jeśli chodzi o generowanie swoich zapytań, pozdrawiam.
Np. tak (zakładam, że chodzi Ci o czyste zapytania SQL w railsach):
ActiveRecord::Base.connection.select_all("select * from users limit where id = 55")
Ps. chyba szybciej będzie Ci googlować za tak typowymi problemami.
Dzięki, pomogłeś! ; ) Ale moje pytanie brzmi jeszcze tak - w jaki sposób mogę wstawiać tam moje zmienne? Byłbym wdzięczny za odpowiedź! ; )
"jakiestam zapytanie #{zmienna}"
naprawdę powinieneś przerobić jakiś kurs railsów albo przeczytać jakąś książke, bo to sa absolutne podstawy i nie możesz o coś takiego za każdym razem pytac na forum
Przestańcie mnie denerwować! Opis tematu brzmi “Zaczynasz z RoR/Rubim i szukasz podstawowej pomocy ?”
Może was zdziwię, ale przeczytałem książkę Jarosława Zabiełło i czytałem kilka innych kursów. Więc proszę - bez takich.
Ano dobrze gadasz.
Masz więc dwie metody wstawiania zmiennych do zapytań. Pierwsza, to zwyczajne wstawnienie zmiennej w zwyczajnego Stringa:
sort = "ORDER BY name"
User.find_by_sql("SELECT * FROM users #{sort}")
Prolem w tym, że musisz pamiętać o escapowaniu zmiennych.
Druga metoda, to przekazanie tablicy:
User.find_by_sql( ["SELECT * FROM users WHERE name like ? AND created_by < ?", "John%", Time.now] )
User.find_by_sql( ["SELECT * FROM users WHERE name like :name AND created_by < :time", {:name => "John%", :time => Time.now}])
Tutaj już Railsy się martwią o to, żeby każdą wartość przekonwertować i wyescapować odpowiednio.
Haczyk w tym, że nie każda metoda rozumie SQLa przekazanego w tej tablicowatej postaci, ale to już sobie znajdziesz albo w dokumentacji konkretnej metody, albo eksperymentalnie. Ja zwykle nie pamiętam
Jeśli chcesz zmusić Railsy do przygotowania Ci wyescapowanego SQLa, możesz użyć prywatnej metody ActiveRecord::Base.sanitize_sql( query, *params)
No! I takiej odpowiedzi oczekiwałem, nie jakieś narzekanie. Ale i tak wszystkim podziękuję za chęć pomocy, jednak Arsenowi najbardziej! To wszystko i jeszcze raz - wielkie dzięki. : )
A może wkleisz nam to zapytanie i opowiesz co miałoby robić? Bo całkiem prawdopodobne, że ten sam efekt da się uzyskać korzystając ze zwykłych ActiveRecordowych metod.
Może jeszcze pogłaskać? Sorry, ale jak zadajesz pytania, na które masz odpowiedź w googlu to nie dziw się iż podnoszą się głosy narzekania.
Nie wszyscy mają wyrobiony nawyk szukania w googlach (zdziwiłbyś sie jak wielu dobrych programistów go nie ma), nie wszyscy też wiedzą jak szukać i od tego jest ten dział. Oczywiście, że nikt nikomu wszystkiego na tacy nie będzie podawał ale każdy kiedyś zaczynał. Dzisiaj tu zadał pytanie, jak dostanie odpowiedź + wskazówki co gdzie jak i dlaczego a nie zbywające “poszukaj se”, to jutro poszuka na googlach a pojutrze zrobi commit do railsów. Trochę cierpliwości…
Cenną informacją dla błądzącego będzie zasugerowanie mu frazy, którą może wbić w google. Nie każdy problem, szczególnie gdy człowiek jeszcze nie zna mechanizmów danego środowiska, da się wyrazić tak, żeby w wyniku dostać coś więcej niż milion bezużytecznych reklam.
To ja tylko jeszcze wrzuce swoje grosze. Modul w ActiveRecordzie, ktory jako parametry wejsciowe przyjmuje SQL http://apidock.com/rails/v3.0.0/ActiveRecord/ConnectionAdapters/DatabaseStatements
Moje słowa były sprowokowane przez “No! I takiej odpowiedzi oczekiwałem, nie jakieś narzekanie.” Każdy kto mnie zna wie dobrze, że nie odmawiam pomocy.
Powiem tylko, że czasami solidna zjeba może być bardzo skuteczną formą pomocy.
Cisza! Pomogliście! Dziękuję! ; *
Veto! Liberum veto! Kajże to tak, wolnych obywateli uciszać? W prawie żeśmy są! A o pomaganiu dysputa takoż pomocna być może, coby i następne pokolenia beneficyja jakoweś zyskały.
Na tym forum jest na tyle mały ruch, że ludzie są spragnieni flejma, nie dziw się, że nawet z prostego pytania wytworzy się dyskusja na 10 stron
Skoro tak, to mogę zadawać pytania nie przejmując się, że będzie flejm typu ‘googlowałeś?’, a normalne odpowiedzi? : D Mogę rozruszać was chłopaki, bo ja przykładowo ma często problemy i wątpliwości.
Niby możesz, ALE forum będzie lepsze (lepszy signal-to-noise ratio) a my Tobie wdzięczniejsi jeśli przed zadaniem tutaj pytania zadasz je googlowi. Będąc początkującym raczej nie trafisz na problemy, których już ktoś nie miał i nie opisał w internetach razem z rozwiązaniem.