質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.60%

  • Ruby on Rails

    6996questions

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

Rails4 fixtureのプライマリキーが大きくなる

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 682

smith

score 161

初期データfixtureで入れると下記のようにプライマリーが大きくなってしまいます。
どうしたら正しく初期データを入れ込むことができるでしょうか

Category id: 1, parent_id: nil, code: "0000000", name: "root", 
Category id: 8375840, parent_id: 1, code: "0050000", name: "家電製品"
Category id: 20068273, parent_id: 280649686, code: "0600600", name: "人文/社会"

ymlの記述が間違っているのでしょうか
#category.yml
root:
  id: 1
  code: '0000000'
  name: 'root'

<% # root のカテゴリー
   #---------------------
   {メンズ: 10000, レディース: 20000, キッズ: 30000, インテリア: 40000, 家電製品: 50000, 本: 60000,
    チケット: 70000, おもちゃ: 80000, エンターテインメント: 90000, スポーツ: 100000}.each do |key, val| %>
<%= key %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: 1
<% end %>

<% # メンズ の子カテゴリー
   #---------------------
   {トップス: 100100, アウター: 100200, パンツ: 100300, 靴: 100400,
    帽子: 100500, その他: 100600}.each do |key, val| %>
<%= "mens_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:メンズ) %>
<% end %>



<% # レディース の子カテゴリー
   #---------------------
   {トップス: 200100, アウター: 200200, パンツ: 200300, 靴: 200400,
    帽子: 200500, その他: 200600}.each do |key, val| %>
<%= "ladies_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:レディース) %>
<% end %>


<% # キッズ の子カテゴリー
   #---------------------
   {トップス: 300100, アウター: 300200, パンツ: 300300, 靴: 300400,
    帽子: 300500, その他: 300600}.each do |key, val| %>
<%= "kids_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:キッズ) %>
<% end %>



<% # インテリア 家具 の子カテゴリー
   #---------------------
   {'ソファ/椅子'=>  400100, 'テーブル/机'=>  400200, 'ベット/寝具'=>  400300,
        収納: 400400, 照明: 400500, キッチン: 400600, その他: 400700}.each do |key, val| %>
<%= "furniture_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:インテリア) %>
<% end %>



<% # 家電製品 の子カテゴリー
   #---------------------
   {'パソコン/タブレット'=> 500100, 'スマートフォン/携帯'=> 500200, 生活家電: 500300,
        オーディオ機器: 500400, 'テレビ/映像機器'=> 500500, カメラ: 500600, その他: 500700}.each do |key, val| %>
<%= "electronic_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:家電製品) %>
<% end %>



<% # 本 の子カテゴリー
   #---------------------
   {'漫画/コミック'=> 600100, '文学/小説'=> 600200, 'アート/エンターテインメント'=> 600300, ノンフィクション: 600400,
        雑誌: 600500, '人文/社会'=> 600600, '趣味/スポーツ'=> 600700, '住まい/暮らし'=> 600800, 'ビジネス/経済'=> 600900,
        'コンピュータ/インターネット'=> 601000, 教育: 601100, 医学: 601200, その他: 601300}.each do |key, val| %>
<%= "book_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:本) %>
<% end %>



<% # チケット の子カテゴリー
   #---------------------
   {国内アーティスト: 700100, 海外アーティスト: 700200, イベント系: 700300,
    スポーツ: 700400, '演劇/舞台'=> 700500, 'ミュージカル/お笑い'=> 700600, その他: 700700}.each do |key, val| %>
<%= "ticket_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:チケット) %>
<% end %>


<% # おもちゃ の子カテゴリー
   #---------------------
   {テレビゲーム: 800100, トレーディングカード: 800200, フィギア: 800300,
    プラモデル: 800400, ラジコン: 800500, ぬいぐるみ: 800600, LEGO: 800700, その他: 800800}.each do |key, val| %>
<%= "toy_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:おもちゃ) %>
<% end %>




<% # エンターテインメント の子カテゴリー
   #---------------------
   {'DVD/Blu-ray'=> 900100, 楽器: 900200, 美術品: 900300,
    コレクション: 900400, その他: 900500}.each do |key, val| %>
<%= "entertainment_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:エンターテインメント) %>
<% end %>





<% # スポーツ の子カテゴリー
   #---------------------
   {スポーツ用品: 1000100, アウトドア用品: 1000200, 自電車: 1000300,
    フィッシング: 1000400, その他: 1000500}.each do |key, val| %>
<%= "sports_#{key}" %>:
  code: '<%= format('%07d', val) %>'
  name: '<%= key %>'
  parent_id: <%= ActiveRecord::Fixtures.identify(:スポーツ) %>
<% end %>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

fixtureはテスト用なので、初期データの投入は db/seeds.rbに書いてrake db:seedを実行するのがよいです

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/07 00:52

    rake db:seedのほうがわかりやすいですね

    キャンセル

0

<%= key %>:
  code: '<%= format('%07d', val) %>'
次のようにしてみてください。
<%= key %>:
  id: 2
  code: '<%= format('%07d', val) %>'
明示的に id を指定すればよいです。
id を指定しないと、<%= key %> のハッシュ値が id の値になります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/07 23:33

    お礼が遅れました。すいません
    fixturesは主にテストデータの入れ込み時に使うようですね

    キャンセル

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

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby on Rails

    6996questions

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