2016-01-11 147 views
0

我试图将父项模型(订单)中的user_id传递给子模型(销售)。由于这不起作用,“正常”的方式,如@sale.user_id = current_user.id(这实际上适用于父母模型Order@order.user_id = current_user.id)。Rails:嵌套窗体 - 将user_id从父项传递给子项

class Sale < ActiveRecord::Base 
    belongs_to :order 
    before_create :user 

    def user 
    self.user_id = Order.where(:id => self.order_id).pluck(:user_id) 
    end 

end 

user我比较订单 .ID(父)与销售 .order_id(子)作为order_id被保存在售中:我在我的模型作为一种变通方法试过这种记录。当我查看最后的销售记录时,user_id总是nil

class SalesController < ApplicationController 
load_and_authorize_resource 
before_action :authenticate_user! 

def create 
    @order = Order.find(params[:order_id]) 
    @sale = @order.sales.create(params[:sale].permit(:product, :product_group, :discount, :order_id, :user_id, :multiplier)) 
    redirect_to order_path(@order) 
end 

你有想法吗?

+0

哪里是在其中创建'Sale'和'Order'记录的代码? – RAJ

+0

对不起。刚添加SalesController。订单不相关恕我直言,因为一切工作在那里。 – CottonEyeJoe

+0

你在哪里创建订单记录?请确认你的订单记录是否真的有'user_id'栏填写正确 – RAJ

回答

1

在你的模型中试试这个。

def user 
    self.user_id = self.order.user_id 
end 
+0

那么简单!谢谢@哈里Bomrah – CottonEyeJoe

+0

@Harakiri没有问题.. :) –

1

PARAMS [:出售] .permit(:产品:PRODUCT_GROUP,:打折,:ORDER_ID:user_id说明,:乘数)

首先,你应该在您的控制器中不允许使用user_id & order_id

其次,你可以填充你的销售的user_id如下:

def user 
    user_id = order.user_id 
end 
相关问题