잘 - 내 자신의 질문에 (회상) 대답 - '당신의 여섯'; 과거의 설정, 정의 및 작은 패치가 당신을 몰래 빠져 나올 수 있다는 것을 의미합니다!테스트가 프롬프트에서 실패하고 레일 콘솔을 통과하는 이유는 무엇입니까?
제 경우에는 기본 범위 내 모델을 돕는 환경 변수가 범인이었습니다!
이에게 나 동일한 테스트 레일 콘솔에 전달하는 증명하려고이 gist 문서를 할 때이 출력을 제공, 레이크 사양와 공장의 실행하면 실패
OX_ID=1 RAILS_ENV=test r c
와 startet :
Running spec/models/user_spec.rb
....F
Failures:
1) User should have 1 role through user_group
Failure/Error: permission = Factory.create(:roleable, authorization: "all", ox: @ox, role: role)
ActiveRecord::RecordInvalid:
Validering fejlede: Ox skal udfyldes
# ./spec/factories/factories.rb:28:in `block (3 levels) in <top (required)>'
# ./spec/models/user_spec.rb:60:in `block (2 levels) in <top (required)>'
Finished in 2.01 seconds
5 examples, 1 failure
Failed examples:
rspec ./spec/models/user_spec.rb:56 # User should have 1 role through user_group
이 RSpec에 시험에 총 신인이기 때문에, 그리고 BTW 키와 키가 점점 계속 전체 레일 스택 정말 편안하지, 난 완전히 내 E 놓친 NV는 [ "OX_ID은"] 명령 줄에서, (왜/어떻게해야/그것을 할 수 원인의?) 테스트 환경에 생존하지 않았다
멀리 나는 마침내
추가이에서 촬영하려면
y user.roles.to_sql
(내게 어떤 종류의 SQL Rails가 컴파일되는지 보도록하겠습니다.) 출력을 볼 때 나는 내 눈을 믿지 않았습니다!
SELECT `roles`.* FROM `roles` INNER JOIN `roleables` ON `roles`.`id` = `roleables`.`role_id`
INNER JOIN `user_groups` ON `roleables`.`roleable_id` = `user_groups`.`id` AND `roleables`.`roleable_type`
= 'UserGroup' INNER JOIN `user_groups_users` ON `user_groups`.`id` = `user_groups_users`.`user_group_id`
WHERE `user_groups_users`.`user_id` = 3 AND (roles.ox_id=NULL) AND (roleables.ox_id=NULL)
AND (user_groups.ox_id=NULL)
(roles.ox_id=NULL)
이 모든 것을 제공했습니다. 나는 그것이라고 말하는 것을 기대하고 있었다 roles.ox_id=1
그리고 여기에서는 그것이 있었다!
아니요! (아니오), dev env에서 실행되지 않습니다. (아니오) 도움이되지 않았다 <: –