Как инициировать новый объект профиля (has_one) после успешной регистрации в Rails3 и разработке

Итак, у меня есть настройка для выполнения регистрации. После регистрации пользователь перенаправляется на profiles#new, однако я не могу привязать профиль к идентификатору текущего_пользователя.

На самом деле он вообще не работает. Вот что у меня есть в моем profiles_controller.rb

# POST /profiles

def create @profile = current_user.Profile.new(params[:profile])

respond_to do |format|
  if @profile.save
    format.html { redirect_to(@profile, :notice => 'Profile was successfully created.') }
  else
    format.html { render :action => "new" }
  end
end

конец

приводит к неопределенному методу `Profile' для #


person Olivier    schedule 14.01.2011    source источник


Ответы (2)


Итак, User модель has_one :profile ?

Если это так, вы, вероятно, хотите:

@profile = current_user.profile.build(params[:profile])

Обратите внимание, что здесь важен регистр ("профиль" и "профиль").

person Andy Lindeman    schedule 15.01.2011
comment
Спасибо. К сожалению, вот что происходит с неопределенным методом `build' для nil:NilClass. Это работает, когда я делаю это в 2 этапа. Любая причина, почему? #@user = текущий_пользователь #@profile = @user.create_profile(params[:profile] - person Olivier; 15.01.2011
comment
Вы уверены, что у вас есть has_one :profile (или belongs_to :profile... в зависимости от того, какой внешний ключ) в модели User? - person Andy Lindeman; 15.01.2011

Я думаю, что вы должны использовать

@profile = current_user.build_profile(params[:profile])

Проверьте rails API здесь

person Franco Brusatti    schedule 19.05.2012