我有三个文件,这里是一个没有显示字段的样本
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
为什么会发生这种情况?或者我做错了什么?
由于
答案 0 :(得分:1)
references_many :students,:stored_as => :array
表示学生返回的值在此处调用
College.find('4cb2a6457adf3500dd000089').students
是一个数组,而不是可链接的标准。 您需要将查询拆分为两个语句。
答案 1 :(得分:0)
您可以在一个查询中执行此操作。就像是: College.find('4cb2a6457adf3500dd000089')。where(“students.mark.total'=>'100')。first