【发布时间】:2011-10-25 02:13:32
【问题描述】:
这里是代码
#add email of team lead of the current user
def add_the_tl_email(to_address, session_user_id)
ul = UserLevel.find_by_user_id(session_user_id)
if !ul.team.nil? && !ul.role.nil?
User.user_status('active').joins(:user_levels).where(:user_levels => {:position => 'tl',
:role => ul.role,
:team => ul.team }).each do
|u| to_address << u.email
end
end
end
来自规范的错误:
1) CustomersController GET customer page 'create' successful should create one customer record
Failure/Error: post 'create', :customer => @customer
NoMethodError:
undefined method `team' for nil:NilClass
# ./app/mailers/user_mailer.rb:36:in `add_the_tl_email'
# ./app/mailers/user_mailer.rb:15:in `notify_tl_dh_ch_ceo'
# ./app/controllers/customers_controller.rb:27:in `create'
# ./spec/controllers/customers_controller_spec.rb:48:in `block (5 levels) in <top (required)>'
# ./spec/controllers/customers_controller_spec.rb:47:in `block (4 levels) in <top (required)>'
team 是 user_level 中的一个字段。这是工厂中的用户级别:
Factory.define :user_level do |level|
level.role "sales"
level.position "member"
level.team 1
level.association :user
end
在 Rails 控制台中,ul.team.nil?对工厂生成的测试数据返回真或假。
既然 team 是 user_level 中的一个字段,为什么 spec 中会出现如下错误:NoMethodError: nil:NilClass 的未定义方法“团队”?
谢谢。
【问题讨论】:
-
请写一个有意义且相关的标题。如果
nil.team不是一种方法,那么问题就来了。
标签: ruby-on-rails ruby rspec2