0

3つのドキュメントがあります。これは、フィールドが表示されていないサンプルです。

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の生徒がいないため、nilになります

大学が存在するが、同じコードが私の実際のコードでエラーを発生させるという条件で

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

なぜこれが起こっているのか考えはありますか?または私は何か間違ったことをしましたか?

ありがとう

4

2 に答える 2

1
references_many :students,:stored_as => :array

ここで学生が呼び出す値が返されることを意味します

College.find('4cb2a6457adf3500dd000089').students

配列であり、チェーン可能な Criteria ではありません。クエリを 2 つのステートメントに分割する必要があります。

于 2010-10-20T11:30:53.037 に答える
0

1つのクエリでそれを行うことができます。次のようなもの:College.find( '4cb2a6457adf3500dd000089')。where( "students.mark.total'=>' 100')。first

于 2010-11-01T04:19:03.427 に答える