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

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

新規登録して質問してみよう
ただいま回答率
85.35%
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などの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

1038閲覧

【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

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.35%

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

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

質問する

関連した質問