在我的聊天应用中,我想计算学生模型的回复率。
我使用slug
属性跟踪所有会话。它是这样的字符串:270-77
,这意味着这是学生270
和招聘人员77
之间的对话。
现在我想查看一个学生的谈话次数。这是我的代码:
def calculate_number_of_conversations(@student)
@conversations = Conversation.where("slug LIKE ?", "%#{params[@student]}")
end
重要的是它应该只搜索字符串的第一部分,因为slug
中的第一个数字始终是学生的ID。
答案 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