2015-11-27 1 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_date в routine, который обеспечивает routine_id. Или я мог бы установить @missed_date в current_user, который предоставил бы user_id, но мне нужно, чтобы оба идентификатора были сохранены действием create.

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

Если я правильно понимаю вопрос, вы хотите установить user_id для вашей записи MissedDate в действии create.

Если это правильно, вам просто нужно назначить 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 должен рассматривать полиморфную ассоциацию –

+1

Я думаю, что полиморфная ассоциация здесь не совсем правильная, но, возможно, ассоциация с моделью «User» через «Routine» из модели «MissedDate». Это может быть достигнуто с помощью 'has_one: user, через:: procedure'. Но я не знаю, должна ли каждая запись «MissedDate» иметь назначенный «Пользователь» только потому, что она имеет «подпрограмму». – Tobias

Смежные вопросы