0

當我有一個用戶模型(設計)和已創建了HAS_ONE/belongs_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 

配置文件被創建,但用戶id沒有填充。我得到一個質量分配警告關於設置:USER_ID上的配置文件,因爲我有attr_accessible上的個人資料曝光了幾場。

我不想刪除attr_accessible但不明白爲什麼設置一個字段被認爲是質量分配。我想這可能與通過散列這樣做我用盡以下作爲一種變通方法:

@profile = Profile.create 
@profile.user_id = self.id 

這消除了警告,但USER_ID仍然沒有得到在配置文件中設置。解決這個問題的正確方法是什麼?

任何清晰度非常感謝! :)

回答

1

你在你的解決方法結束呼叫@ profile.save?

也許你可以試試這個:

def create_profile 
    self.build_profile.save 
end