2010-10-20 63 views
0

我有三个文件,这里是场未显示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 

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

感谢

+0

9个问​​题和0个接受如果您接受问题的答案,将来会收到更多的答案 – 2010-10-20 11:33:00

回答

1
references_many :students,:stored_as => :array 

意味着由学生返回的值这里叫

College.find('4cb2a6457adf3500dd000089').students 

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

+1

感谢您的回复,但我仍然需要查询学生数组,但请给我一些想法如何查询学生obj数组,以便我可以找到学生标记= 100.如果我知道stored_at =>:array会有帮助吗?是性能问题还是其他问题。 – Gagan 2010-10-21 04:40:18

+0

我有点问题。stored_as的用途究竟是什么?因为使用它会导致其他问题问题 – 2010-10-22 10:37:10

0

您可以在一个查询中完成。例如: College.find('4cb2a6457adf3500dd000089')。其中(“students.mark.total”=>'100')首先