Не удалось обновить мой внешний ключ в новом методе, используя таблицу Devise for Users.

У меня есть две модели пользователей и профилей (пользователи из devise). У пользователя может быть много профилей, поэтому я создал миграцию, чтобы добавить user_id в профили.

class Profile < ActiveRecord::Base
belongs_to :user

attr_accessible :description, :name, :product, :image, :price , :user_id
mount_uploader :image, ImageUploader
validates_presence_of :name, :product,:image, :price
end

class User < ActiveRecord::Base

# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me

# attr_accessible :title, :body
has_many :profiles
validates_associated :profiles
end

В моем контроллере профилей у меня есть новый метод для создания нового профиля. Я хочу, чтобы когда пользователь входит в систему, он мог видеть только свои профили, а не все. определенно новый

@profile = current_user.profiles.build

#@profile = @user.profile.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @profile }
end

конец

В идеале мой столбец user_id должен обновляться при сборке, но мой user_id не обновляется, и поэтому профили не отображаются. я использую postgresql с pg gem, и когда я вручную добавляю user_id для этого профиля, я могу видеть профили.

Пожалуйста, помогите решить эту проблему, я могу понять это уже давно. Дайте мне знать, если вам нужна дополнительная информация, чтобы решить эту проблему.


person Mindtrades    schedule 05.01.2013    source источник


Ответы (1)


Может быть, попробуйте что-то подобное в своем контроллере:

if current_user.profiles.count == 0
  profile = Profile.create
  current_user.profiles << profile
end
person Fa11enAngel    schedule 06.01.2013
comment
Теперь это дает мне ошибку для моего представления, неопределенный метод `model_name' для NilClass:Class 1: ‹%= form_for @profile, :html =› { :class =› 'form-horizontal' } do |f| %› 2: ‹fieldset› 3: ‹legend›‹%= controller.action_name.capitalize %› Profile‹/legend› . Какие изменения я должен сделать, на мой взгляд - person Mindtrades; 15.01.2013