Ruby on rails 我可以在查找中直接使用模型对象吗

Ruby on rails 我可以在查找中直接使用模型对象吗,ruby-on-rails,activerecord,model,find,Ruby On Rails,Activerecord,Model,Find,我有以下型号: 学生 班 老师 一个学生可以有多个班级,一个班级可以有0或1名教师。 我希望能够对学生调用一个方法,看看他们是否有特定的老师,并返回true或false 下面的代码似乎有效,但我认为它看起来有点冗长,必须将每个教师属性与数据库中的属性进行比较 a_teacher = Teacher.new(:name => "Bob", :age => 30) self.classes.all(:conditions => ["teacher.name = ? AND tea

我有以下型号:

学生 班 老师

一个学生可以有多个班级,一个班级可以有0或1名教师。 我希望能够对学生调用一个方法,看看他们是否有特定的老师,并返回true或false

下面的代码似乎有效,但我认为它看起来有点冗长,必须将每个教师属性与数据库中的属性进行比较

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)

我认为有一种方法可以将一个_教师传递到find中,而不是单独指定属性。谢谢

我想你必须像你在奎斯顿写的那样使用它。ActiveRecord不会以这种方式分析查询字符串来猜测所传递对象的实例方法。你应该考虑创建一些名为“范围”的例子:例如,老师(老师),如果需要的话,将按姓名和年龄进行搜索。 我希望能够在上调用一个方法 让学生看看他们是否有 指定教师,并返回true或 错

为什么你要按姓名和年龄而不是教师ID查找教师

self.classes.all(:conditions => ["teacher_id = ?", teacher_student_is_interested_in.id])
你的问题很难理解。如果您需要更详细的答案,请发布更多您的模型

编辑: 考虑到你发布的额外信息,听起来你在尝试更像搜索的东西。我建议阅读以下内容:


  • 你说的“直接通过老师”是什么意思?:]我觉得我应该能够做如下事情:self.classes.all(:conditions=>a_teacher,:joins=>:teacher)self代表哪个类?你到底想用这段代码实现什么?也许有了这些信息我可以帮你…我已经更新了问题,我希望这次我提供了足够的信息。我没有教师ID,用户输入教师姓名和年龄,然后提交,然后我显示一个特定的学生姓名,以及输入的教师是否是学生教师之一。您的数据库中有教师。为什么不从学生的输入中查找特定id?当两个叫Bob的30岁孩子都是老师时会发生什么?我试图从用户输入中查找一个特定的id,如果我找到了,我会返回true。如果两者都称为bob,并且与输入的年龄相同,则返回true。