2015-11-27 28 views
2
MissedDate.last 
id: 32, 
user_id: nil, 
routine_id: 16, 
date_missed: Thu, 19 Nov 2015 05:00:00 EST -05:00, 
created_at: Fri, 27 Nov 2015 16:57:17 EST -05:00, 
updated_at: Fri, 27 Nov 2015 16:57:17 EST -05:00, 

我們怎樣才能將user_id設置爲current_user而不是nil如何使用嵌套資源保存current_user CREATE操作?

missed_dates_controller所述創建動作設置@missed_dateroutine,它提供了routine_id。或者我可以將@missed_date設置爲current_user,這將提供user_id,但我需要通過創建操作保存兩個ID。

def create 
    routine = current_user.routines.find(params[:routine_id]) 
    routine.missed_days = routine.missed_days + 1 
    routine.save 
    @missed_date = routine.missed_dates.build(missed_date_params) 
    @missed_date.save 
    respond_modal_with @missed_date, location: root_path 
    end 

我非常感謝您的幫助!

+0

您可以添加':USER_ID => current_user.id'到您的PARAMS哈希 –

回答

2

如果我理解的問題正確的比您想要爲create操作中的MissedDate記錄設置user_id

如果這是正確的,那麼在保存記錄之前必須分配user_id

例如:

您創建行動:

def create 
    routine = current_user.routines.find(params[:routine_id]) 
    routine.missed_days = routine.missed_days + 1 
    routine.save 
    @missed_date = routine.missed_dates.build(missed_date_params) 
    @missed_date.user = current_user # <= Here you assign the user to the to the `MissedDate` record. Please ensure that your MissedDate `belongs_to` the User model! 
    @missed_date.save 
    respond_modal_with @missed_date, location: root_path 
end 
+0

這可能會工作,但整體造型邏輯被打破,並會帶來大量的錯誤。我認爲TS應該考慮多態性assosatiation –

+1

我認爲多態關聯不是正確的方式,但可能是通過'MissedDate'模型中'Routine'的'用戶'模型的關聯。這可以通過'has_one:user,through::routine'來實現。但我不知道是否每個'MissedDate'記錄都應該有一個分配的'User',只是因爲它有一個'routine'分配。 – Tobias