0

我有三个文件,这是一个未显示字段的示例

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

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

谢谢

4

2 回答 2

1
references_many :students,:stored_as => :array

表示学生调用这里返回的值

College.find('4cb2a6457adf3500dd000089').students

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

于 2010-10-20T11:30:53.037 回答
0

您可以在一个查询中完成。类似于: College.find('4cb2a6457adf3500dd000089').where("students.mark.total' => '100').first

于 2010-11-01T04:19:03.427 回答