2011-11-10 7 views
0

を照会についての簡単な質問私は経由でこれをやっている要求=「プレビュー」を持っているMongoidからすべての「カード」を取得するためにRuby on RailsとMongoidがナットを運転しています!

をしようとしています:

@preview_cards = Card.where("request" => "PREVIEW") 

私はいくつかの質問を持っています。

1)どうしてできないのですか?

@preview_cards = Card.find_by_request("PREVIEW") 

私はエラーを取得:私は@preview_cards変数にカードを持っていたら、私はそれらを反復処理することはできませんクラス

2):カードの未定義のメソッド `find_by_request」を。たとえば:

@preview_cards.each do |c| c.fullname end 

は単純にオブジェクトID #<Mongoid::Criteria:0x103eaf778>

3を返します)あなたの代わりの最初と最後呼び出すことができる「すべての」方法があります。たとえば、これは動作します:

@preview_cards.first.fullname 

しかし、私はmongoの各 "行"を繰り返し処理できるようにしたいと考えています。

ご協力いただければ幸いです!ありがとう。

答えて

1

スキーマがないため、オートマティックメソッドが生成されません。あなた自身のヘルパーを作成することもできます。

本当ですか?それは私にとってうまくいく。返されるものは、一度反復しようとした場合とは異なります。私は非常に多くありませんフレームワークPHPに慣れ、とすることはできません - 「オートマジックメソッドの世代を」片付けのため

Card.all(conditions: { request: "PREVIEW" }) 
+0

ありがとう:たとえば:

[19] pry(main)> ts = FooDoc.where("name" => "ohai") => #<Mongoid::Criteria selector: {"name"=>"ohai"}, options: {}, class: FooDoc, embedded: false> [20] pry(main)> ts.each { |t| p t.name } "ohai" => #<Mongoid::Criteria selector: {"name"=>"ohai"}, options: {}, class: FooDoc, embedded: false> 

すべてを取得するため、allを使用物事がいつ魔法ではなくてはならないかを伝える。また、すべての方法で "条件"はエラーを投げた..多分私はやって奇妙な何か。いずれにせよ、それぞれが正しく動作したので、私はそれを使用します。ありがとうございました。 –

+0

@BrianW問題ありません。私はRuby 1.9の構文を使用しました。あなたは1.8ですか?その場合は、古いハッシュ構文を使用します。 –