Как мне исправить неопределенный метод `email 'для nil: NilClass с помощью devise - PullRequest
1 голос
/ 20 января 2012

У меня немного странная проблема.У меня есть контроллер проектов, в котором я создаю новый проект, связанный с компанией и созданный вошедшим в систему пользователем (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
  ....

Как получилось, слияние!не будет работать?Я бы подумал, что слияние пользователя в объекте будет прекрасно.Какой правильный (или предпочтительный) способ сделать это?

Спасибо

1 Ответ

0 голосов
/ 22 января 2012

Я понял это.Это была проблема массового назначения.У меня был attr_accessible :title, :description, :account_number, :account_executive в моем коде, отключил его, чтобы разрешить массовое назначение, и он работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...