Railsの自動魔法に頭を包むのに問題があります。現在、何らかの形で相互に関連している4つの異なるテーブルがありますが、アプリケーションでそれを表すのに苦労しています。PHP / MySQLでこれを問題なく行うことができましたが、新しいフレームワークへの変換は思ったほど簡単ではありませんでした。
現在、4つのテーブルがありますが、これと同じ構造を模倣するテーブルがさらに多くなります。現在の4つのテーブルは(railsクラス表現)です。
各ユーザーは、InterestPageMapを介してhas_many InterestPage(s)を持っています
各InterestPageはInterestPageCategoryに属し、InterestPageCategoryには多くのInterestPageがあります。
特定のユーザーに新しいInterestPageを追加するときは、最初に、InterestPageCategoryが存在し、InterestPageが正しいカテゴリにリンクされていることを確認する必要があります。この種の関係について行くための最良の方法は何ですか?
私が今使用している方法は私にこのエラーを与えています:
uninitialized constant User::InterestPageCategory
ですから、私がやろうとしていることからはかなりかけ離れていると思います。私のユーザークラスコードは次のようになります。
has_many :interest_page_maps, foreign_key: "fb_id", dependent: :destroy
...
category = InterestPageCategory.where(category: resp["category"]).first_or_create
# Then I try to add the page with the correct category
page = InterestPage.where(resp[0]).first_or_create do |interestpage|
# Should I be adding the page through the category in this block?
interestpage.name = resp["name"]
interestpage.id = resp["id"]
end
ヒントや提案をいただければ幸いです。ありがとう!
これは私の側のタイプミスであることが判明しました。Railsは、関係を生成するときにクラス名ではなくファイル名を参照します。
InterestPageCategoryクラスを含むファイルの名前はinterest_page_categories.rbでした。これは正しくありませんでした。Railsが参照しようとしたクラスを「見る」には、ファイルの名前がinterest_page_category.rb(単数形と複数形)である必要がありました。
これが他の誰かに役立つことを願っています、あなたのネーミングの人々をチェックすることを忘れないでください!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加