2017-09-01 2 views
1

In meiner Chat-App möchte ich die Response-Rate für Studentenmodell berechnen.Wie suche ich eine ID in einem String-Attribut (SQL)

Ich verfolge alle Gespräche mit einem slug Attribut. Es ist ein String wie folgt: 270-77, was bedeutet, dass dies eine Konversation zwischen Student 270 und Personalvermittler 77 ist.

Jetzt möchte ich überprüfen, wie viele Gespräche ein Student hat. Hier ist mein Code:

def calculate_number_of_conversations(@student) 
    @conversations = Conversation.where("slug LIKE ?", "%#{params[@student]}") 
end 

Wichtig ist, dass es nur im ersten Teil der Zeichenfolge gesucht werden soll, weil die erste Zahl in slug ist immer eine ID des Schülers.

def calculate_number_of_conversations(@student) 
    @conversations = Conversation.where("slug LIKE ?", "%#{params[@student]}-") 
end 
+2

Sie MySQL oder PostgreSQL verwenden? – jarlh

+1

Für Student sollte der LIKE 'LIKE% 270-%' sein Für Recruiter sollte der LIKE 'LIKE% -77%' sein, dies sollte in MySQL und PostgreSQL funktionieren –

+0

Postgresql @jarlh. Danke Jungs, werde es testen! – crievino

Antwort

3

Ich bin nicht sicher, was @student ist: - '' zu der WHERE LIKE-Klausel

+0

Danke! Ich werde es mir ansehen. Diese Abfrage gibt mir alle Konversationen, die die student_id enthalten. Wenn ich also mit student_id "9" suche, bekomme ich Konversation von Studenten mit ID: 9,99,297 usw. Wie suche ich nach einer bestimmten Nummer? – crievino

1

Sie können die hinzuzufügen. Ich werde meine Beispiele schreiben, als wäre es ein Rekord.

könnten Sie - verwenden, um sicherzustellen, dass es nur für Studenten sucht:

@conversations = Conversation.where('slug LIKE ?', "#{@student.id}-%") 

Aber ich denke, es ist besser, explizite Beziehungen zu haben:

class Conversation < ApplicationRecord 
    belongs_to :student 
    belongs_to :recruiter 
end 

@conversations = @student.conversations 
+0

Wenn ich zum Beispiel nach student_id 9 suche, gibt es mir alle Gespräche mit student_ids mit einer '9'. Also auch 297, 99, 91 usw. Wie soll ich nur die spezifische Saite ansprechen? – crievino

Verwandte Themen