我有以下型号:
学生 类 教师
一个学生可以有多个班级,一个班级可以有0或1个教师。 我希望能够在学生上调用一种方法,看看他们是否有特定的老师,并返回真或假。以下代码似乎有效,但我觉得它看起来有点长,不得不将每个教师属性与数据库中的属性进行比较。
a_teacher = Teacher.new(:name => "Bob", :age => 30)
self.classes.all(:conditions => ["teacher.name = ? AND teacher.age = ?", a_teacher.name,a_teacher.age], :joins => :teacher)
我认为可能有办法将a_teacher传递给find,而不是单独指定属性。感谢
答案 0 :(得分:0)
我认为你必须像在问题中所写的那样使用它。 ActiveRecord不会以这种方式分析查询字符串来猜测传递对象的实例方法。您应该考虑创建一些named_scope,例如:by_teacher(teacher)如果需要,将按名称和年龄进行搜索。
答案 1 :(得分:0)
我希望能够调用方法 学生看他们是否有 具体的老师,并返回true或 假的。
为什么您要按照姓名和年龄来查找老师,而不是老师ID?
self.classes.all(:conditions => ["teacher_id = ?", teacher_student_is_interested_in.id])
您的问题非常难以理解。如果您需要更详细的答案,请发布更多您的模型。
编辑: 鉴于您发布的额外信息,听起来您正在尝试更像搜索的内容。我建议阅读以下内容: