如何在字符串属性中搜索id(SQL)

时间:2017-09-01 13:52:23

标签: sql ruby-on-rails ruby postgresql activerecord

在我的聊天应用中,我想计算学生模型的回复率。

我使用slug属性跟踪所有会话。它是这样的字符串:270-77,这意味着这是学生270和招聘人员77之间的对话。

现在我想查看一个学生的谈话次数。这是我的代码:

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

重要的是它应该只搜索字符串的第一部分,因为slug中的第一个数字始终是学生的ID。

2 个答案:

答案 0 :(得分:3)

我不确定@student是什么。我会把我的例子写成一张唱片。

您可以使用-来确保它只是在寻找学生:

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

但我认为建立明确的关系会更好:

class Conversation < ApplicationRecord
  belongs_to :student
  belongs_to :recruiter
end

@conversations = @student.conversations

答案 1 :(得分:1)

您可以在WHERE LIKE子句中添加“ - ”:

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