🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

3515閲覧

ancestryを用いたseedファイルの実行時にNoMethodError 'children'が出る

murakamixi

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2019/11/25 15:38

編集2019/11/25 15:41

解決したいこと

seedファイルがDBのTestCategoryに登録できるようにしたい。
現在、複数階層になるカテゴリーを作成しようと思っています。
それで、複数階層になるDBを作成する際にancestryを用いてchildrenメソッドを用いて作成しようとしております。
ancestryのgemはインストールしています。

エラーメッセージ

rails db:seed実行時のエラー

error

1rails aborted! 2NoMethodError: undefined method `children' for #<TestCategory id: 9, name: "レディース", ancestry: nil> 3/Users/murakamikazutaka/category/db/seeds.rb:11:in `<top (required)>' 4/Users/murakamikazutaka/category/bin/rails:9:in `<top (required)>' 5/Users/murakamikazutaka/category/bin/spring:15:in `<top (required)>' 6bin/rails:3:in `load' 7bin/rails:3:in `<main>' 8Tasks: TOP => db:seed 9(See full trace by running task with --trace)

何度かrails db:seedを何度か実行しているのでidが9となっています。

code

seeds

1lady = TestCategory.create(name: "レディース") 2 3lady_tops = lady.children.create(name: "トップス") 4lady_jacket = lady.children.create(name: "ジャケット/アウター") 5lady_pants = lady.children.create(name: "パンツ") 6lady_skirt = lady.children.create(name: "スカート") 7lady_one_piece = lady.children.create(name: "ワンピース") 8lady_shoes = lady.children.create(name: "靴") 9lady_roomwear_pajama = lady.children.create(name: "ルームウェア/パジャマ") 10lady_hat = lady.children.create(name: "帽子") 11lady_bag = lady.children.create(name: "バッグ") 12lady_accessory = lady.children.create(name: "アクセサリー") 13lady_small_articles = lady.children.create(name: "小物") 14lady_watch = lady.children.create(name: "時計") 15lady_wig_extension = lady.children.create(name: "ウィッグ/エクステ") 16lady_yukata_swim = lady.children.create(name: "浴衣/水着") 17lady_suite_fomal_dress = lady.children.create(name: "スーツ/フォーマル/ドレス") 18lady_maternity = lady.children.create(name: "マタニティ") 19lady_another = lady.children.create(name: "その他") 20 21lady_tops.children.create([{name:"すべて"},{name: "Tシャツ/カットソー(半袖/袖なし)"},{name: "Tシャツ/カットソー(七分/長袖)"},{name: "シャツ/ブラウス(半袖/袖なし)"},{name: "シャツ/ブラウス(七分/長袖)"},{name: "ポロシャツ"},{name: "キャミソール"},{name: "タンクトップ"},{name: "ホルターネック"},{name: "ニット/セーター"},{name: "チュニック"},{name: "カーディガン/ボレロ"},{name: "アンサンブル"},{name: "ベスト/ジレ"},{name: "パーカー"},{name: "トレーナー/スウェット"},{name: "ベアトップ/チューブトップ"},{name: "ジャージ"},{name: "その他"}]) 22lady_jacket.children.create([{name: "すべて"},{name: "テーラードジャケット"},{name: "ノーカラージャケット"},{name: "Gジャン/デニムジャケット"},{name: "レザージャケット"},{name: "ダウンジャケット"},{name: "ライダースジャケット"},{name: "ミリタリージャケット"},{name: "ダウンベスト"},{name: "ジャンパー/ブルゾン"},{name: "ポンチョ"},{name: "ロングコート"},{name: "トレンチコート"},{name: "ダッフルコート"},{name: "ピーコート"},{name: "チェスターコート"},{name: "モッズコート"},{name: "スタジャン"},{name: "毛皮/ファーコート"},{name: "スプリングコート"},{name: "スカジャン"},{name: "その他"}]) 23lady_pants.children.create([{name: "すべて"},{name: "デニム/ジーンズ"},{name: "ショートパンツ"},{name: "カジュアルパンツ"},{name: "ハーフパンツ"},{name: "チノパン"},{name: "ワークパンツ/カーゴパンツ"},{name: "クロップドパンツ"},{name: "サロペット/オーバーオール"},{name: "オールインワン"},{name: "サルエルパンツ"},{name: "ガウチョパンツ"},{name: "その他"}]) 24lady_skirt.children.create([{name: "すべて"},{name: "ミニスカート"},{name: "ひざ丈スカート"},{name: "ロングスカート"},{name: "キュロット"},{name: "その他"}]) 25lady_one_piece.children.create([{name: "すべて"},{name: "ミニワンピース"},{name: "ひざ丈ワンピース"},{name: "ロングワンピース"},{name: "その他"}]) 26lady_shoes.children.create([{name: "すべて"},{name: "ハイヒール/パンプス"},{name: "ブーツ"},{name: "サンダル"},{name: "スニーカー"},{name: "ミュール"},{name: "モカシン"},{name: "ローファー/革靴"},{name: "フラットシューズ/バレエシューズ"},{name: "長靴/レインシューズ"},{name: "その他"}]) 27lady_roomwear_pajama.children.create([{name: "すべて"},{name: "パジャマ"},{name: "ルームウェア"},{name: "レッグウェア"}]) 28lady_hat.children.create([{name: "すべて"},{name: "ニットキャップ/ビーニー"},{name: "ハット"},{name: "ハンチング/ベレー帽"},{name: "キャップ"},{name: "キャスケット"},{name: "麦わら帽子"},{name: "その他"}]) 29lady_bag.children.create([{name: "すべて"},{name: "ハンドバッグ"},{name: "トートバッグ"},{name: "エコバッグ"},{name: "リュック/バックパック"},{name: "ボストンバッグ"},{name: "スポーツバッグ"},{name: "ショルダーバッグ"},{name: "クラッチバッグ"},{name: "ポーチ/バニティ"},{name: "ボディバッグ/ウェストバッグ"},{name: "マザーズバッグ"},{name: "メッセンジャーバッグ"},{name: "ビジネスバッグ"},{name: "旅行用バッグ/キャリーバッグ"},{name: "ショップ袋"},{name: "和装用バッグ"},{name: "かごバッグ"},{name: "その他"}]) 30lady_accessory.children.create([{name: "すべて"},{name: "ネックレス"},{name: "ブレスレット"},{name: "バングル/リストバンド"},{name: "リング"},{name: "ピアス(片耳用)"},{name: "ピアス(両耳用)"},{name: "イヤリング"},{name: "アンクレット"},{name: "ブローチ/コサージュ"},{name: "チャーム"},{name: "その他"}]) 31lady_small_articles.children.create([{name: "すべて"},{name: "ヘアゴム/シュシュ"},{name: "ヘアバンド/カチューシャ"},{name: "ヘアピン"},{name: "その他"}]) 32lady_watch.children.create([{name: "すべて"},{name: "腕時計(アナログ)"},{name: "腕時計(デジタル)"},{name: "ラバーベルト"},{name: "レザーベルト"},{name: "金属ベルト"},{name: "その他"}]) 33lady_wig_extension.children.create([{name: "すべて"},{name: "前髪ウィッグ"},{name: "ロングストレート"},{name: "ロングカール"},{name: "ショートストレート"},{name: "ショートカール"},{name: "その他"}]) 34lady_yukata_swim.children.create([{name: "すべて"},{name: "浴衣"},{name: "着物"},{name: "振袖"},{name: "長襦袢/半襦袢"},{name: "水着セパレート"},{name: "水着ワンピース"},{name: "水着スポーツ用"},{name: "その他"}]) 35lady_suite_fomal_dress.children.create([{name: "すべて"},{name: "スカートスーツ上下"},{name: "パンツスーツ上下"},{name: "ドレス"},{name: "パーティーバッグ"},{name: "シューズ"},{name: "ウェディング"},{name: "その他"}]) 36lady_maternity.children.create([{name: "すべて"},{name: "トップス"},{name: "アウター"},{name: "インナー"},{name: "ワンピース"},{name: "パンツ/スパッツ"},{name: "スカート"},{name: "パジャマ"},{name: "授乳服"},{name: "その他"}]) 37lady_another.children.create([{name: "すべて"},{name: "コスプレ"},{name: "下着"},{name: "その他"}])

model

1class TestCategoryTest < ActiveSupport::TestCase 2 # test "the truth" do 3 # assert true 4 # end 5 has_ancestry 6end

migration

1class AddAncestryToTestCategory < ActiveRecord::Migration[5.2] 2 def change 3 add_column :test_categories, :ancestry, :string 4 add_index :test_categories, :ancestry 5 end 6end

試したこと

  • ancestry gemの再インストール
  • seeds.rb 書き直し

参考URL

https://note.com/syojikishindoi/n/nd8ddd8cb93f8
https://qiita.com/haruya_hamasaki/items/b1d2a694c79e50278332
https://qiita.com/haruya_hamasaki/items/b1d2a694c79e50278332

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

migrationをしなおしたらなぜか治りました。

投稿2020/02/26 16:31

murakamixi

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

class TestCategory に has_ancestry してますか?

投稿2019/11/25 21:38

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問