。如果只有1个结果就会破坏 - 铁路

时间:2012-11-06 05:30:18

标签: ruby-on-rails ruby-on-rails-3 each

出于某种原因,每次我尝试执行此操作时,我都会收到“未定义的方法'每个'”错误。当我在下面有一个结果时,我会这样做。

如果我使用.inspect,我可以看到有匹配。如果结果不超过1,那么.each是否有效?如果没有,我应该使用什么呢?

<% friends = graph.get_object("/me/friends").map{ |hash| hash["id"] } %>

<% User.select([:id]).where(fbookid: friends).each do |common| %>

<% end %>

如果我只是在User.select行上运行.inspect(不是每个),那么我得到

[#<User id: 1>]

任何帮助将不胜感激!

谢谢!

更新

添加其他参数似乎允许我使用每个...我不知道为什么。这是完全相同的结果(只有1)。

User.select([:id, :email, :first_name]).where(fbookid: friends).each do |friend|

2 个答案:

答案 0 :(得分:0)

你得到简单的对象而不是数组,因此它不起作用。当.each获得简单对象以便您可以直接使用

时,array方法正常工作

例如

# if name attributes
User.select([:id]).where(fbookid: friends).name

答案 1 :(得分:0)

可以 使用User.select([:id]).where(fbookid: friends)上的每一个,即使只有一个元素。即使没有元素,它也不会引发异常。

错误发生在其他地方。也许你在每个循环中的某些内容上都会出错。

你可以发布更多代码吗?