

**やりたいこと**  
seedファイルからテーブルへデータを投入したい

**起きている問題やエラーメッセージ**  
rails db:seedを行ってもデータの投入ができない  
rails cでcreateを実行し中身を確認してみましたが、投入できておりませんでした。

[code]

    [2] pry(main)> Product.create(id: 1,product_name: '海鮮鍋セット(4人前)', product_price: '12800', image: File.open('./app/assets/images/uni.jpg'))
    => #<Product:0x00007f87f1b26008 id: 1, product_price: 12800, product_name: "海鮮鍋セット(4人前)", image: "#<File:0x00007f87f1b260a8>", created_at: nil, updated_at: nil>
    [3] pry(main)> Product.all
      Product Load (0.5ms)  SELECT `products`.* FROM `products`
    => []
    
    
[/code]

**関連するソースコード**

seeds.rb

[code]

    Product.create(id: 1,product_name: '海鮮鍋セット(4人前)', product_price: '12800', image: File.open('./app/assets/images/uni.jpg'))
    Product.create(id: 2, product_name: 'もつ鍋セット(4人前)', product_price: '10800', image: File.open('./app/assets/images/motu.jpg'))
    
[/code]

20210828062853_create_products.rb

[code]

    class CreateProducts < ActiveRecord::Migration[6.0]
      def change
        create_table :products do |t|
          t.integer :product_price
          t.string :product_name
          t.text :image 
          t.timestamps
        end
      end
    end
    
[/code]

schema.rb

[code]

    ActiveRecord::Schema.define(version: 2021_08_28_062853) do
    
      create_table "menus", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
        t.integer "price"
        t.string "name"
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
      end
    
      create_table "orders", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
        t.date "arrival", null: false
        t.integer "number", null: false
        t.integer "product_name", null: false
        t.integer "product_price", null: false
        t.bigint "user_id", null: false
        t.bigint "product_id", null: false
        t.index ["product_id"], name: "index_orders_on_product_id"
        t.index ["user_id"], name: "index_orders_on_user_id"
      end
    
      create_table "products", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
        t.integer "product_price"
        t.string "product_name"
        t.text "image"
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
      end
    
      create_table "reservations", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
        t.time "time", null: false
        t.date "date", null: false
        t.integer "people", null: false
        t.text "remark"
        t.integer "person_price", null: false
        t.integer "total_price", null: false
        t.bigint "user_id", null: false
        t.bigint "menu_id", null: false
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
        t.index ["menu_id"], name: "index_reservations_on_menu_id"
        t.index ["user_id"], name: "index_reservations_on_user_id"
      end
    
      create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
        t.string "email", default: "", null: false
        t.string "encrypted_password", default: "", null: false
        t.string "nickname", null: false
        t.string "phone", null: false
        t.string "postal_code", null: false
        t.string "prefecture", null: false
        t.string "municipality", null: false
        t.string "address", null: false
        t.string "building"
        t.string "reset_password_token"
        t.datetime "reset_password_sent_at"
        t.datetime "remember_created_at"
        t.datetime "created_at", precision: 6, null: false
        t.datetime "updated_at", precision: 6, null: false
        t.index ["email"], name: "index_users_on_email", unique: true
        t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
      end
    
      add_foreign_key "orders", "users"
      add_foreign_key "reservations", "users"
    end
    
[/code]

**試したこと**

[code]

    created_at: nil, updated_at: nil
    
[/code]

と出ておりましたので、ターミナルで全ての情報を記述したものを実行しましたが、投入するに至りませんでした。

[code]

    [4] pry(main)> Product.create(id: 1, product_name: '海鮮鍋セット(4人前)', product_price: '12800', image: File.open('./app/assets/images/uni.jpg'), created_at: 'Sat, 28 Aug 2021 07:14:56 UTC +00:00', updated_at: 'Sat, 28 Aug 2021 07:14:56 UTC +00:00')
    => #<Product:0x00007f881231f5c8
     id: 1,
     product_price: 12800,
     product_name: "海鮮鍋セット(4人前)",
     image: "#<File:0x00007f881231f6e0>",
     created_at: Sat, 28 Aug 2021 07:14:56 UTC +00:00,
     updated_at: Sat, 28 Aug 2021 07:14:56 UTC +00:00>
    
[/code]

↓

[code]

    [5] pry(main)> Product.all
      Product Load (0.8ms)  SELECT `products`.* FROM `products`
    => []
    
[/code]

**使用言語・ライブラリのバージョン**  
Rails 6.0.4.1

このほか、何か投入できていない原因をご教示いただけると幸いです。


CC BY-SA 4.0
2021-08-28T08:34:48.783
81089
2023-08-07T13:07:00.903
47748
question
ruby-on-rails mysql
seedファイルからデータベースへデータを投入することができない。


こんにちは！  
Rails初学者ですが、お役に立てればと思いコメントさせて頂きます！

まず、`rails db:seed`を実行した際にサンプルデータが投入できないということだと思いますが、`rails
db:seed`実行時にエラーは何か出ていませんでしょうか？

ちなみにidやcreated_at・updated_atはrails側で勝手に振ってくれますので決め打ちはよくないようです。

自分がysk0507さんのseed.rbを書いたとしたらこんな感じにすると思います。

[code]

    Product.create!(product_name: '海鮮鍋セット(4人前)', product_price: '12800', image: open(Rails.root.join('/app/assets/images/uni.jpg'))
    
[/code]

※createの後に `!` をつけるとエラーが起きて保存できなかった時に例外を出してメッセージを出してくれます。

後はエラー文を見て原因を特定するのが良いかと思いますがいかがでしょうか！


CC BY-SA 4.0
2021-08-28T11:45:59.683
81092
2021-08-30T02:04:24.613
2021-08-30T02:04:24.613
3060
47954
81089
answer