2016-08-08 7 views
0

なぜオブジェクトではなくEnumerableを取得するのか分かりません。私はこのコードを実行すると:#Enumeratorため返されるオブジェクトがEnumerableなのはなぜですか?

未定義のメソッド `タイトル」:コメント:見つける({:ID => 1})>

- @posts.each do |post| 
    = Comment.find(id: post.id).title 

を、私はこのエラーを持っています

私はコンソールで確認した場合、私はまた、列挙子を取得:

[2] pry(#<Sinatra::Application>)> Comment.find 1 
=> #<Enumerator: ...> 

は、私はちょうどのように私のオブジェクトを持つようにしたいです

私はSinatraとDatamapperと協力しています。

+1

本当にあなたはDatamapperで作業していますか?私はDatamapperがモデルで 'find'メソッドを定義していないので、私は尋ねています。 ActiveRecordはSequelと同じように動作します。 –

+0

私はdatamapperを初めて使用します。私はオブジェクトを呼び出すメソッドは同じだと思った、これはおそらく実際に問題です! – Orsay

+1

いくつかのドキュメントについてはhttp://datamapper.org/docs/find.htmlを参照してください。 –

答えて

1

あなたが探しているクエリは次のとおりです。

の短いバージョンです
Comment.first(id: post.id).title 

Comment.all(id: post.id).first.title 

DataMapperのにはfindは(私の知っていること)はありません。あなたが実際に見ているのは、RubyのEnumerable#find:http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-findの結果です。これはDatamapperオブジェクトの一部でなければなりません。

関連する問題