Вот код
#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)>'
Команда - это поле в user_level.Вот пользовательский уровень на фабрике:
Factory.define :user_level do |level|
level.role "sales"
level.position "member"
level.team 1
level.association :user
end
В консоли рельсов ul.team.nil?возвращает либо true, либо false для тестовых данных, сгенерированных фабрикой.
Поскольку команда является полем в user_level, почему в спецификации есть ошибка, такая как: NoMethodError: неопределенный метод `team 'для nil: NilClass?
Спасибо.