我試圖創建一個系統,我的網站的用戶可以收藏頁面。這些網頁有兩種類型,不管是俱樂部還是體育。所以,我有四個型號,因此相關: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
運動型號:
class Sport < ActiveRecord::Base
..
def to_param
slug
end
..
has_many :favorites, :as => :favoritable
has_many :users, :through => :favorites
..
end
基本上,用戶has_many通過收藏夾運動或俱樂部,而收藏夾,運動和俱樂部之間的關聯是多態的。
實際上,這一切都按照我想要的方式工作,並且我設計的整個系統都能正常工作。但是,我在我的網站上使用Rails_Admin,並在三處出現錯誤:
- 第一次加載儀表板(/ admin)時。如果我刷新頁面,它工作正常。
- 當加載在Rails_Admin
- User模型當Rails_Admin
加載收藏模型這裏是關於/admin/user
(gist)的錯誤消息。所有的錯誤都是相似的,參考ActiveRecord::Reflection::ThroughReflection#foreign_key delegated to source_reflection.foreign_key, but source_reflection is nil:
。
任何人都可以在正確的方向指向我,以便我可以解決這個問題嗎?我搜遍了所有,並問其他程序員/專業人士,但沒有人可以發現我的模型中的錯誤。非常感謝!
作爲進一步的調試線索:當我有一個關聯的自定義名稱時發生在我身上。我的User類使用了has_many,我通過指定source作爲自定義關聯名稱以及源類型作爲我的自定義關聯的類名來解決它。很好的回答@alexlafroscia! – corvuszero