我有两个模型Exam
和Student
。
exam.rb
class Exam < ApplicationRecord
belongs_to :year
belongs_to :student, class_name: "Student"
def self.search(search)
if search
self.where('student. LIKE ?', "%#{search}%")
else
self.all
end
end
end
student.rb
class Student < ApplicationRecord
belongs_to :year
has_many :exams
end
student
中的exam.rb
字段指的是Student对象。但是,模型Student
具有属性name
,我想根据该属性执行搜索,并找出该学生所参加的考试列表。是否可以进行此类查询?如果是这样,那么实施它的正确方法是什么?
谢谢
答案 0 :(得分:0)
您可以使用joins
和where
:
exams_list = Exams.joins(:student).where('students.name LIKE ?', "%#{search}%"))
希望它有所帮助。
答案 1 :(得分:0)
您可以尝试:
def self.search(search)
if search
self.joins(:student).where('students.name LIKE ?', "%#{search}%")
else
self.all
end
end
希望它有所帮助。
答案 2 :(得分:0)
如果您想搜索文本而不管或大写(大写),您可以使用ilike选项进行更好的搜索:
exams_list = Exams.joins(:student).where('students.name ilike ?', "%#{search}%"))
希望它有所帮助。