我不明白为什么我会得到一个Enumerable而不是一个对象。当我运行此代码时:
- @posts.each do |post|
= Comment.find(id: post.id).title
我发现了这个错误:
未定义的方法`标题'对于#Enumerator:评论:find({:id => 1})>
如果我在控制台办理登机手续,我也会得到枚举器:
[2] pry(#<Sinatra::Application>)> Comment.find 1
=> #<Enumerator: ...>
我只想拥有像#<Comment @id=1 @content="great" @post_id=1>
我正在与Sinatra和Datamapper合作。
答案 0 :(得分: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对象的一部分。