\r\n<% end %>\r\n```\r\n\r\n↓Orderモデル マイグレーションファイル user_idカラムとproduct_idカラムの2つのカラムをもっています。\r\n```ここに言語を入力\r\nclass CreateOders < ActiveRecord::Migration[5.2]\r\n def change\r\n create_table :oders do |t|\r\n t.integer :user_id\r\n t.integer :product_id\r\n\r\n t.timestamps\r\n end\r\n end\r\nend\r\n```\r\n\r\n↓Orderモデル  app/models/order.rb\r\n```ここに言語を入力\r\nclass Oder < ApplicationRecord\r\n validates :user_id, {presence: true}\r\n validates :product_id, {presence: true}\r\nend\r\n\r\n```","answerCount":1,"upvoteCount":0,"datePublished":"2020-06-29T10:23:54.032Z","dateModified":"2020-06-29T10:57:27.314Z","acceptedAnswer":{"@type":"Answer","text":"`app/models/order.rb`が存在するかを確認してください。\r\n\r\n---\r\n\r\n> create_table :oders \r\n\r\n`oders`になっているので、おそらく`Oder`ですね。","dateModified":"2020-06-29T10:48:53.416Z","datePublished":"2020-06-29T10:48:53.416Z","upvoteCount":1,"url":"https://teratail.com/questions/273807#reply-390540"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/Ruby%20on%20Rails%205","name":"Ruby on Rails 5に関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/273807","name":"【Rails】product_controllerからOrderモデルをcreateしようとしたらエラー。"}}]}}}
質問するログイン新規登録

Q&A

解決済

1回答

1104閲覧

【Rails】product_controllerからOrderモデルをcreateしようとしたらエラー。

popomarudasi

総合スコア20

Ruby on Rails 5

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

Ruby

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

Ruby on Rails 6

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2020/06/29 10:23

編集2020/06/29 10:57

0

0

ECサイトを作っています。
Pay.jpを用いて決済機能をつけました。
モデルは、Userモデル、Productモデル、Orderモデルの3つです。
Productコントローラのpayアクションで、決済処理+オーダ情報作成(Orderモデル作成)の2つの処理を施しました。
決済処理のみのときはうまくいっていたのですが、Order.newの処理を書くとエラーが起きてしまいます。
他のコントローラから他のモデルを作成するのはできないのでしょうか?
できない場合、決済処理後にOrderモデルを作成させるにはどのようにするのがベターでしょうか?

↓エラーメッセージ (「そんなモデルないよ」みたいな怒られ方をしています。)
http://localhost:3000/products/23/pay

uninitialized constant ProductsController::Order

↓product_controller.rb 決済処理+Orderモデル作成 処理

rails

1 def pay 2 @product = Product.find_by(id: params[:id]) 3 Payjp.api_key = ENV['PAYJP_PRIVATE_KEY'] 4 Payjp::Charge.create( 5 :amount => @product.price, 6 :card => params['payjp-token'], 7 :currency => 'jpy' 8 ) 9 @order = Order.new( 10 user_id: current_user.id, 11 product_id: params[:product_id] 12 ) 13 @order.save 14 redirect_to root_path, notice:'購入しました' 15 end

↓buy.html.erb 決済画面です。

rails

1<%= form_with local: true, url: "/products/#{@product.id}/pay" do |form| %> 2 <script 3 type="text/javascript" 4 src="https://checkout.pay.jp" 5 class="payjp-button" 6 data-key= "<%= ENV["PAYJP_ACCESS_KEY"] %>"> 7 </script> 8<% end %>

↓Orderモデル マイグレーションファイル user_idカラムとproduct_idカラムの2つのカラムをもっています。

class CreateOders < ActiveRecord::Migration[5.2] def change create_table :oders do |t| t.integer :user_id t.integer :product_id t.timestamps end end end

↓Orderモデル  app/models/order.rb

class Oder < ApplicationRecord validates :user_id, {presence: true} validates :product_id, {presence: true} end

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

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

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

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

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

guest

回答1

0

ベストアンサー

app/models/order.rbが存在するかを確認してください。


create_table :oders

odersになっているので、おそらくOderですね。

投稿2020/06/29 10:48

asm

総合スコア15149

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

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

popomarudasi

2020/06/29 10:55 編集

解答ありがとうございます。 確認しましたが、app/models/order.rbで作れていました。 コマンドも残っていたので確認したのですが、 rails g model Oder user_id:integer product_id:integer となっていて、モデルはOderモデルで作れているみたいです。
popomarudasi

2020/06/29 11:00

ごめんなさい、間違っていました。 ばっちしOderになっていました。 直して確認してみます。 ありがとうございます。
popomarudasi

2020/06/29 11:04

お騒がせしてすみません、おっしゃるとおりでした。 いつもお世話になっております。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問