私はこの問題を解決するために努力してきましたが、実際に何が起こっているのか分かりません。で検索してください。含まれていないオブジェクトでエラーが発生しました。
DiscoveredLocation.find_by_user_id(user.id, :include => [:boss_kills])
モデルは以下のとおりです:
DiscoveredLocation(id, user_id, boss_location_id)
BossKill(user_id, monster_id)
や団体:私はこのコードの小片を持って
NoMethodError in BossesController#index
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
:
Monster belongs_to :boss_location
Monster has_many :boss_kills
BossKill belongs_to :user
BossKill belongs_to :monster
DiscoveredLocation belongs_to :user
DiscoveredLocation belongs_to :boss_location
DiscoveredLocation has_many :monsters, :through => :boss_location
DiscoveredLocation has_many :boss_kills, :through => :monsters
私はfind_byを実行し、私はこのエラーを取得します
私がincludを変更した場合他のどのモデルにもeオプションをつけることができます。私はこの問題によってかなり所有されています:P。多分誰かが私を助けることができますか?私は、あなたを助けるDiscoveredLocation.find_by_user_id(user.id, :include => [:boss_kill])
最後をしようとするが、間違っている可能性が
これは非常に興味深いですね。私は詳しく見ており、すぐに私の発見を報告します。 – Spyros
ええと、プラグインをインストールしても、同じエラーが表示されます。 2番目の考えでは、レールはデフォルトでこの関連付けをサポートすべきだと私は考えます。 discover_locationには多くのboss_killsがあり、モンスターにはboss_killsが多く存在するため、discover_locationにはboss_killsからmonsterがあります。これは標準的な結合のように見えます。私はBossLocation Modelでも同じことをしており、うまくいきます。私はBossLocation> has_many:users、:through =>:discovered_locationsを持っています。それはどのように関係が設定されるかである可能性があります:/ – Spyros
いいえ、私は 'has_many:through'のネストネストをサポートしていません。あなたは3つの関連付けを持っています: 'belongs_to:boss_location'、そして2つの' has_many:through'関連が連鎖しています。あなたのベスト・ベットIMOは 'boss_kills'関連で':finder_sql'オプションを使い、自分でクエリを書くことです。 – zetetic