나는 각 사용자에 대한 항목과 주문이있는 상점을 짓고 있습니다. 지금은 각 주문을 current_user와 연결하려고합니다. 즉, 명령을 내리는 사람입니다. 모델을 연결하는 방법을 알았지 만 주문 작성시 모델을 주문하기 위해 user_id를 저장하는 내용을 알아낼 수 없습니다. 표준 Devise 엔진을 사용하고 있습니다. has_one :order
어떻게 current_user와 주문을 연관시킬 수 있습니까?
이 내입니다 :
belongs_to :order_status
belongs_to :user
has_many :order_items
before_create :set_order_status
before_save :update_subtotal
def subtotal
order_items.collect { |oi| oi.valid? ? (oi.quantity * oi.unit_price) : 0 }.sum
end
private
def set_order_status
self.order_status_id = 1
end
def update_subtotal
self[:subtotal] = subtotal
end
end
order_item.rb
class OrderItem < ActiveRecord::Base
belongs_to :product
belongs_to :order
validates :quantity, presence: true, numericality: { only_integer: true, greater_than: 0 }
validate :product_present
validate :order_present
before_save :finalize
def unit_price
if persisted?
self[:unit_price]
else
product.price
end
end
def total_price
unit_price * quantity
end
private
def product_present
if product.nil?
errors.add(:product, "is not valid or is not active.")
end
end
def order_present
if order.nil?
errors.add(:order, "is not a valid order.")
end
end
def finalize
self[:unit_price] = unit_price
self[:total_price] = quantity * self[:unit_price]
end
end
그리고 user.rb에 내가 가진 Order.rb
:
이
내 모델입니다 OrderItemsController :class OrderItemsController < ApplicationController
def create
@order = current_order
@order_item = @order.order_items.new(order_item_params)
@order.save
session[:order_id] = @order.id
end
def update
@order = current_order
@order_item = @order.order_items.find(params[:id])
@order_item.update_attributes(order_item_params)
@order_items = @order.order_items
end
def destroy
@order = current_order
@order_item = @order.order_items.find(params[:id])
@order_item.destroy
@order_items = @order.order_items
end
private
def order_item_params
params.require(:order_item).permit(:quantity, :product_id)
end
end
좋아요. 매개 변수를 허용했지만 user_id를 설정하기위한 작업을 만들 때 정확히 무엇을 써야합니까? 이미 @ action_item = @ order.order_items.new (order_item_params)를 만들기 때문에 params를 쓰고있어 혼란 스럽습니다. –
order_items 또는 order_items에 저장하려고합니까? – toddmetheny
예 주문시에 저장하고 싶습니다 ... –