为什么这样有效并且在IRB中不起作用?

时间:2010-08-17 17:06:36

标签: ruby-on-rails ruby irb

我有用户。用户has_many:组织

如果我这样做:

User.find(:all).select {|u| u.organizations.first.name }

它返回:

NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.name
from (irb):33
from (irb):33:in `select'
from (irb):33

长话短说:

我正在尝试从每个用户中找到第一个组织的名称。

1 个答案:

答案 0 :(得分:8)

因为您的某个用户没有任何组织,所以organization.first是nil

您可以通过

来防止这种情况发生
User.find(:all).select {|u| 
  u.organizations.first.name unless u.organizations.size == 0}