У меня немного странная проблема.У меня есть контроллер проектов, в котором я создаю новый проект, связанный с компанией и созданный вошедшим в систему пользователем (current_user), вот мое действие create.
def create
@project = @company.projects.build(params[:project].merge!(:user => current_user))
#@project.user = current_user
if @project.save
#debugger
flash[:notice] = "Project has been created."
redirect_to [@company, @project]
else
flash[:alert] = "Project has not been created."
render :action => "new"
end
end
Приведенный выше код прерывается при перенаправлении нана странице проекта отображается следующая ошибка:
неопределенный метод `email 'для nil: NilClass
%b
Created by
= @project.user.email # <-- errors, not sure why
Так что я знаю, что все остальное сохраняется, кроме пользователя, которыйсоздал этот проект.Если я уберу .merge!в моем методе создания и сделать это в два этапа, он прекрасно работает, например, так:
def create
@project = @company.projects.build(params[:project])
@project.user = current_user
....
Как получилось, слияние!не будет работать?Я бы подумал, что слияние пользователя в объекте будет прекрасно.Какой правильный (или предпочтительный) способ сделать это?
Спасибо