내 사이트의 사용자가 즐겨 찾기 페이지를 만들 수있는 시스템을 만들려고합니다. 그 페이지에는 클럽이나 스포츠의 두 가지 유형이 있습니다.has_many를 사용한 소스 리플렉션 오류 : 통해
사용자 모델 :
class User < ActiveRecord::Base
..
has_many :favorites
has_many :sports, :through => :favorites
has_many :clubs, :through => :favorites
..
end
즐겨 찾기 모델 :
class Favorite < ActiveRecord::Base
..
belongs_to :user
belongs_to :favoritable, :polymorphic => true
end
클럽 모델 :
class Club < ActiveRecord::Base
..
has_many :favorites, :as => :favoritable
has_many :users, :through => :favorites
def to_param
slug
end
end
스포츠 모델 :
그래서, 나는 4 개 가지 모델, 같은 관련이class Sport < ActiveRecord::Base
..
def to_param
slug
end
..
has_many :favorites, :as => :favoritable
has_many :users, :through => :favorites
..
end
본질적으로 사용자는 많은 수의 스포츠 또는 즐겨 찾기를 통한 클럽을 소유하고 즐겨 찾기, 스포츠 및 클럽 간의 연관은 다형성을 갖습니다.
실제로 이것은 모두 내가 원하는 방식으로 정확하게 작동하며, 내가 설계 한 전체 시스템이 작동합니다. 그러나 내 사이트에서 Rails_Admin을 사용하고 있는데 세 곳에서 오류가 발생합니다.
- 처음으로 대시 보드 (/ admin)를로드 할 때. 페이지를 새로 고치면 제대로 작동합니다.
Rails_Admin에 즐겨 찾기 모델을로드 할 때
/admin/user
(gist)에 오류 메시지입니다. 모든 오류는 유사하며
ActiveRecord::Reflection::ThroughReflection#foreign_key delegated to source_reflection.foreign_key, but source_reflection is nil:
을 참조합니다.
누구나 올바른 방향으로 나를 가리킬 수 있도록이 문제를 해결할 수 있습니까? 나는 모든 것을 조사해 보았고 다른 프로그래머들/전문가들에게 물어 봤지만 아무도 내 모델에서 오류를 발견 할 수 없었다. 정말 고마워!
추가 디버그 단서 : 이것은 내가 협회의 맞춤 이름을 가지고있을 때 나에게 일어났습니다. 내 User 클래스는 has_many through를 사용하고 사용자 지정 연결 이름으로 source를 지정하고 사용자 지정 연결의 클래스 이름으로 소스 유형을 지정하여 수정했습니다. 그레이트 대답 @ alexlafroscia! – corvuszero