2016-04-14 11 views
0

Ich schreibe eine Anwendung mit MySQL. Es gibt eine Tabelle namens "Anfragen".Ruby on Rails: "SELECT" MySQL Befehl

Diese Tabelle hat ein Feld "user_id" aus der Tabelle "Benutzer".

Ich möchte alle Anfragen von einem user_id auswählen.

Zum Beispiel:

SELECT * FROM requests WHERE user_id = ("the id I want"); 

Wie kann ich tun, dass Ruby-Sprache, und nicht eine SQL-Zeichenfolge?

Antwort

1

In ActiveRecords seine wie dies getan:

Request.where(user_id: ID) 
0
Request.find_by_user_id(USER-ID-YOU-WANT) 

Oder

Request.find_by user_id: 'USER-ID-YOU-WANT' 

Dokumentation here

+0

'user_id' ist nicht dasselbe als "id" – Ilya

+0

Sie sind richtig, mein schlechtes. Ich habe es repariert. @Ilya –

0

Es gibt ein paar verschiedene Möglichkeiten, wie man es von @shivam sehen und @ Amalriks Antworten. Es hängt auch von dem verwendeten ORM ab. Wenn Sie die Verwendung von Rails verwenden, verwenden Sie wahrscheinlich ActiveRecord.

Wahrscheinlich die idiomatische Art und Weise ist die richtige associations auf Ihrem User und Request Modelle zu haben.

in app/models/user.rb:

class User < ActiveRecord::Base 
    has_many :requests 
end 

und app/models/request.rb:

class Request < ActiveRecord::Base 
    belongs_to :user 
end 

Dies würde ermöglichen es Ihnen, einen Benutzer zu finden und rufen seine #requests Methode:

User.find(user_id).requests