私はRailsで食事注文システムをやっていますが、私はユーザー、レストラン、食事、注文のモデルを作っています。今の私のモデルは次のようになります。今食事の注文システムと団体
class User < ApplicationRecord
has_many :orders
has_many :restaurants, through: :orders
end
class Order < ApplicationRecord
belongs_to :user
belongs_to :restaurant
end
class Meal < ApplicationRecord
belongs_to :restaurant
end
class Restaurant < ApplicationRecord
has_many :orders
has_many :meals
has_many :users, through: :orders
end
私はいくつかの食事を注文し、私はログにエラーを取得していたデータベースにこの順序を保存するためのフォームを使用しています:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+pwoJ/82k/2SiS7z4X4nVHyaKCMMfWCECQe6TufnkpNaW9PEgvlwxlf3skAH2QQupSLIoe81Z/I0CleL/m9cjw==", "orders"=>{"restaurant_id"=>"2", "meal_id"=>"2", "suggestions"=>""}, "commit"=>"Place your order"}
Unpermitted parameters: restaurant_id, meal_id
(0.1ms) begin transaction
(0.1ms) rollback transaction
Redirected to http://localhost:3000/
Completed 302 Found in 8ms (ActiveRecord: 0.2ms)
マイオーダーコントローラは、次のようになります。
class OrdersController < ApplicationController
def new
@order = Order.new
end
def create
@order = Order.new(order_params)
if @order.save
redirect_to root_path
flash[:success] = "Your order has been added"
else
flash[:danger] = "Error"
redirect_to root_path
end
end
private
def order_params
params.require(:orders).permit(:restaurant, :meal, :suggestions)
end
end
私はDEF order_paramsを変更:
params.require(:orders).permit(:restaurant_id, :meal_id, :suggestions)
私は誰も私を助けることができる、それが悪い団体のせいと仮定
unknown attribute 'restaurant_id' for Order.
を取得していますか?
* UPDATE *今、私がオーダー保存しようとしているとき、私は私のログにエラーを取得してい
:
Started POST "/new_order" for 127.0.0.1 at 2016-12-19 11:18:50 +0100
Processing by OrdersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"nnDqY0FVzUslTJ1VoL57vnlO6aSTLcVuenT1GJwloJ8+txGAPJoucOAyAeZGGVjEoPYJJnBlwhhHeRjdha1ugw==", "orders"=>{"restaurant_id"=>"4", "meal_id"=>"26", "suggestions"=>""}, "commit"=>"Place your order"}
(0.1ms) begin transaction
Restaurant Load (0.1ms) SELECT "restaurants".* FROM "restaurants" WHERE "restaurants"."id" = ? LIMIT ? [["id", 4], ["LIMIT", 1]]
(0.1ms) rollback transaction
Redirected to http://localhost:3000/
Completed 302 Found in 6ms (ActiveRecord: 0.3ms)
*アップデート2 *
Iを@order.save!
の変更を取得しました:
Validation failed: User must exist
order.errors.inspect
で
私はちょうど得る:私は、ユーザーの前にサインインするomniauth使用してい
(0.2ms) rollback transaction
No template found for OrdersController#create, rendering head :no_content
Completed 204 No Content in 97ms (ActiveRecord: 1.8ms)
は食事を注文することができ、これは、サインアップまたはサインインする唯一の方法である私が注文のモデルを作成したとき、私は、user:references
を使用。これが理由だと思いますか?
を行うための1つの方法である、あなたのためにあなたの 'デシベル/ schema.rb'に定義された列' restaurant_id'を持っています'orders'テーブル? – sa77
ありがとう@ sa77それはエラーの助けが、まだDBの順序を保存することはできません。私は自分の投稿を更新しました。 – hydroxyzinum
'save'の代わりに' save! 'を使用すると、バリデーションエラーで例外が発生します –