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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Q&A

1回答

1049閲覧

カラムのデータ出し方

takeke

総合スコア60

Ruby

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

0グッド

0クリップ

投稿2018/04/13 08:12

編集2018/04/13 11:05

最近railsの勉強始めた者です。

ECサイト作っていまして、現在管理者画面を製作しております。
特に管理用のgemは使っていないので1からテーブル作ったりしているのですが、そこで1つわからないことが出てきたので質問させていただきました。

管理画面で商品データの一覧を出したいのですが、商品のidが見つかりませんでした。商品=productsでやっているので、product_idです。

他のテーブルにはproduct_idは入っているのですが、肝心のproductsテーブルにはないので管理画面で扱えなくて困っています。

この場合どのようにしたらよいでしょうか?

新たにproductsテーブルにproduct_idを追加したらいいでしょか?id自体はすでにあるはずなので別の方法がいいと思うですが。

改善の仕方、もしくはデータの取り方お分かりになる方いましたら宜しくお願いしますm(._.)m

====================================================================================
追記,
schema.rb

ActiveRecord::Schema.define(version: 20180413103954) do create_table "carts", force: :cascade do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "categories", force: :cascade do |t| t.string "c_name" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "favorites", force: :cascade do |t| t.integer "user_id" t.integer "product_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "line_items", force: :cascade do |t| t.integer "product_id" t.integer "cart_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "quantity", default: 1 t.integer "order_id" end create_table "orders", force: :cascade do |t| t.string "name" t.text "address" t.string "email" t.string "pay_type" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "products", force: :cascade do |t| t.string "title" t.text "description" t.string "image_url" t.decimal "price", precision: 8, scale: 2 t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "category_id" end create_table "users", force: :cascade do |t| t.string "name" t.string "password_digest" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end

一応載せておきます。

管理画面の編集していますが、adminのテーブルは作っていません。

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

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

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

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

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

guest

回答1

0

はじめまして

Rubyの質問というよりは
DBの範囲の問題、いわゆるマスターDB(=マスターテーブルの集まり)の設計
だと思います。
ですのでデータベースの観点で回答します。

新たにproductsテーブルにproduct_idを追加したらいいでしょか?id自体はすでにあるはずなので別の方法がいいと思うですが。

1. idとproduct_idの違い
id:「productsテーブル」についたデータを識別するID。各テーブルごとに必ずidはありませんか?
テーブル間の連携にはつかえません。

product_id : DB全体に共通するID 文字通り製品ID

2.対策
・alter tableコマンドで追加 
または
・いったんDBの全テーブルのデータをバックアップ、エクスポート。SQLでテーブル再構築。その後productsテーブルを含め、データをインポートし直す。

投稿2018/04/13 09:51

kawakawa2018

総合スコア1195

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

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

takeke

2018/04/13 11:12

回答ありがとうございます!初心者なので理解が悪くて申し訳ないです。 参考になるかもなのでschema.rb載せました。 現在こんな感じなのですが、各テーブルにidがないような気がします。 対策としましては、データ一旦バックアップ、削除して、product_idカラムを追加して、新たにデータを入れ直すということでしょうか?
kawakawa2018

2018/04/13 11:24

こんばんは まず 「対策としましては、データ一旦バックアップ、削除して、product_idカラムを追加して、新たにデータを入れ直すということでしょうか?」 そうですね。簡単に補足しますと ・削除して、 => DBの全テーブルを削除 ・product_idカラムを追加して、=> productsテーブルにproduct_idカラムを追加 ・新たにデータを入れ直す => データ注入 ですね 各テーブルにidがない <= これは無視してください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問