2016-01-11 117 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 
相關問題