mongoid查询问题

时间:2010-10-20 11:20:02

标签: ruby-on-rails console mongoid

我有三个文件,这里是一个没有显示字段的样本

class College
  include Mongoid::Document
  references_many :students,:stored_as => :array, :inverse_of => :colleges
end

class Student
  include Mongoid::Document

  embedded_in :college, :inverse_of => :students
  embeds_one :mark
end

class Mark
  include Mongoid::Document

  embedded_in :student, :inverse_of => :mark
end

现在我在控制台中执行这样的搜索

@college = College.find('4cb2a6457adf3500dd000089').students.where('mark.total' => '100').first.name

给我零,因为没有任何学生总分= = 100

如果大学存在,但相同的代码会在我的实际代码中引发错误

ERROR NoMethodError: undefined method `where' for Array:0x00000107441a30

为什么会发生这种情况?或者我做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

references_many :students,:stored_as => :array

表示学生返回的值在此处调用

College.find('4cb2a6457adf3500dd000089').students

是一个数组,而不是可链接的标准。 您需要将查询拆分为两个语句。

答案 1 :(得分:0)

您可以在一个查询中执行此操作。就像是: College.find('4cb2a6457adf3500dd000089')。where(“students.mark.total'=>'100')。first