, 우리는 rake db:create db:schema:load
동안이 얻을 실패합니다 :는 ActiveAdmin을하고 CircleCI는 : 자동 로더는 포스트 그레스는
PG::UndefinedTable: ERROR: relation "external_videos" does not exist
...
/home/ubuntu/Swearnet/app/models/external_video.rb:11:in `<class:ExternalVideo>'
/home/ubuntu/Swearnet/app/models/external_video.rb:1:in `<top (required)>'
...
/home/ubuntu/Swearnet/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:190:in `const_missing'
/home/ubuntu/Swearnet/app/admin/external_video.rb:1:in `<top (required)>'
...
/home/ubuntu/Swearnet/config/routes.rb:54:in `block in <top (required)>'
새 파일을 제거하면 (이 파일이 다른 ActiveAdmin 파일과 크게 다르지 않지만) 오류가 사라집니다.
이 오류는 경로로 인해 ActiveAdmin이로드되어 ExternalVideo 모델이 자동로드되어 이로 인해 아직 생성되지 않은 external_videos 테이블을 찾지 못하는 것으로 보입니다. 다른 ActiveAdmin 파일에 대해이 문제가 발생하지 않는 이유는 무엇입니까? 다른 사람이 전에 이런 종류의 문제에 부딪 혔습니까?
우리의 새로운 파일이 app/admin/external_videos.rb
과 같습니다
ActiveAdmin.register ExternalVideo do
menu :parent => "Shows"
form do |f|
f.inputs nil do
f.input :title
f.input :description
f.input :published_at
f.input :expires_at
end
f.actions
end
end
편집 : 우리는 문제를 발견이 ... ExternalVideo의 범위 find_by_sxg_id
이름이 있었다. 해당 범위를 get_by_sxg_id
으로 바꾸면 모든 것이 작동합니다. 저는 손실이 있습니다 ... 나는 find_by
이 일반적으로 마법 ActiveRecord 접두사라는 것을 알고 있지만, 레이크 작업에서 생성되기 전에 단순한 정의로 인해 테이블에 액세스하는 방법을 알지 못합니다 ...
물론 나는 그 의사를 보았습니다. 문제는 범위의 단순한 이름으로 인해이 문제가 발생했다는 것입니다. – singpolyma
흠, 나는 그것이 조금 분명하지 않다고 생각한다. activerecord에서 이름을 사용하면 모델이로드되고 모델은 데이터베이스 스키마 인트로 스펙 션에 의존합니다. DB가 없기 때문에 DB가 손상됩니다. 이해가 되니? –