我正在尝试为网站构建购物车。我推车工作,所以你可以添加到购物车。我遇到的问题是当我尝试检查购物车中的商品并尝试提交订单时。我收到以下错误:
OrdersController中的ActiveModel :: MissingAttributeError #create
与
一起无法写入未知属性`order_id'
问题是在orders_controller.rb
文件中突出显示这段代码
respond_to do | format | if @ order.save Cart.destroy(session [:cart_id])session [:cart_id] = nil
我似乎无法解决此错误。
以下是我的orders_controller.rb
文件
def create
@order = Order.new(order_params)
@order.add_line_items_from_cart(@cart)
respond_to do |format|
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id] = nil
format.html { redirect_to store_url,
notice: 'Thank you for your order.' }
format.json { render action: 'show', status: :created, location: @order }
else
format.html { render action: 'new' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
我的迁移文件
class AddOrderToLineItem < ActiveRecord::Migration
def change
add_column :line_items, :order, :reference
end
end
我的order.rb模型
class Order < ActiveRecord::Base
has_many :line_items, dependent: :destroy
validates :name, :address, :email, presence: true
PAYMENT_TYPES = [ "Check", "Credit card", "Purchase order" ]
validates :pay_type, inclusion: PAYMENT_TYPES
def add_line_items_from_cart(cart)
cart.line_items.each do |item|
item.cart_id = nil
line_items << item
end
end
end
migration order table
class CreateOrders < ActiveRecord::Migration
def change
create_table :orders do |t|
t.string :name
t.text :address
t.string :email
t.string :pay_type
t.timestamps
end
end
end
答案 0 :(得分:3)
好的,我想我看到了问题。您对订单项订单的迁移可能无法创建您期望的order_id
列,它可能会创建orders
列或其他内容。
验证数据库中是否存在这种情况。如果是这样,请撤消之前的迁移并尝试此操作:
class AddOrderToLineItem < ActiveRecord::Migration
def change
add_column :line_items, :order_id, :int
end
end
如果没有,请回答此答案。