У меня есть модель пользователя (Devise), и я создал модель профиля с отношением has_one / assign_to.Я пытаюсь автоматически создать профиль, когда пользователь создается следующим образом:
class User < ActiveRecord::Base
has_many :videos, :dependent => :destroy
has_one :profile, :dependent => :destroy
after_create :create_profile
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
protected
def create_profile
Profile.create :user_id => self.id
end
end
Профиль создается, но идентификатор пользователя не заполняется.Я получаю предупреждение о массовом назначении в отношении настройки: user_id в профиле, потому что у меня есть attr_accessible, выставляющий несколько полей в профиле.
Я не хочу удалять attr_accessible, но не понимаю, почему установка одного поля считается массовойназначение.Я подумал, что это может быть связано с передачей хеша, поэтому я попробовал следующее в качестве обходного пути:
@profile = Profile.create
@profile.user_id = self.id
Это удаляет предупреждение, но user_id все еще не устанавливается в профиле.Как правильно решить эту проблему?
Любая ясность высоко ценится!:)