2017-09-01 9 views
1

私のチャットアプリでは、学生モデルの回答率を計算したいと思います。文字列属性のIDを検索するにはどうすればいいですか(SQL)

すべての会話をslug属性で追跡します。このような文字列:270-77。これは学生270と勧誘者77の会話であることを意味します。

今、1人の学生がどれくらいの会話をしたかを確認したいと思います。ここに私のコードは次のとおりです。

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

重要なのはslugの最初の番号は、常に学生のIDですので、それが唯一の文字列の最初の部分で検索する必要があることです。

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

はMySQLやPostgreSQLを使用していますか? – jarlh

+1

学生の場合、LIKEは 'LIKE%270-%'である必要があります。採用担当者にとってLIKEは 'LIKE%-77%'でなければなりません。これはMySQLとPostgreSQLで動作するはずです –

+0

Postgresql @jarlh。ありがとうございます、それをテストします! – crievino

答えて

3

私は@studentが何であるかわからない:LIKE句WHEREに - ''

+0

ありがとう!私は見てみましょう。このクエリは、私にstudent_idを含むすべての会話を与えます。だから私がstudent_id "9"で検索すると、id:9,99,297などの生徒からの会話が得られます。特定の番号を検索するにはどうすればいいですか? – crievino

1

あなたは追加することができます。私は私の例をレコードのように書くつもりです。

あなたはそれが唯一の学生を探していることを確認するために-を使用することができます。

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

しかし、私はそれが明示的な関係を持っている方が良いと思う:

class Conversation < ApplicationRecord 
    belongs_to :student 
    belongs_to :recruiter 
end 

@conversations = @student.conversations 
+0

私がstudent_id 9を検索しようとすると、student_idsと '9'を使ってすべての会話ができます。また、297,99,91など。特定の文字列をどのようにターゲットにすればよいですか? – crievino

関連する問題