サイトのユーザーがページをお気に入りできるシステムを作成しようとしています。これらのページには、クラブまたはスポーツの 2 つのタイプがあります。したがって、次のように関連付けられた 4 つのモデルがあります。
ユーザー モデル:
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
基本的に、ユーザーはお気に入りを通じて多くのスポーツまたはクラブを持っており、お気に入り、スポーツ、およびクラブの間の関連付けは多態的です。
実際には、これはすべて思い通りに機能しており、私が設計したシステム全体が機能しています。ただし、自分のサイトで Rails_Admin を使用していて、次の 3 か所でエラーが発生します。
- 初めてダッシュボード (/admin) をロードするとき。ページを更新すると、正常に動作します。
- Rails_Admin で User モデルをロードする場合
- Rails_Admin で Favorites モデルをロードする場合
/admin/user
(gist)のエラーメッセージは次のとおりです。すべてのエラーは類似しており、 を参照していますActiveRecord::Reflection::ThroughReflection#foreign_key delegated to source_reflection.foreign_key, but source_reflection is nil:
。
これを修正できるように、誰かが私を正しい方向に向けることができますか? 私はあちこちを検索し、他のプログラマー/専門家に尋ねましたが、誰も私のモデルのエラーを見つけることができませんでした. 本当にありがとう!