2015-05-30 76 views
0

我試圖找出如何創建剛剛創建的用戶一個新的配置文件後,的Rails試圖創建一個配置文件的用戶已經創建

我使用設計的用戶模型,並且用戶模型與UserProfile模型具有一對一的關係。

這裏是我的用戶模型是什麼樣子:

class User < ActiveRecord::Base 
    has_and_belongs_to_many :roles 
    belongs_to :batch 
    has_one :user_profile 

    after_create :create_user_profile 

    def create_user_profile 
    self.user_profile.new(:name => 'username') 
    end 

    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 

這產生了以下錯誤:

undefined method `new' for nil:NilClass

我試過User.find(1).user_profile軌Ç,這工作,所以我很確定關係設置正確,

我可能是一個大胖胖的noob,並試圖取自我不正確。

加你也可以告訴我如何訪問模型中的參數......甚至可能嗎?

回答

0

一個has_one關係會自動添加:create_<relationship>build_<relationship>方法。 Checkout the rails guide.

你可以試試這個:

after_create do 
    create_user_profile(:name => 'username') 
end 

或者更可能

after_create do 
    create_user_profile(:name => self.username) 
end 
+0

感謝約翰...爲我工作...你有任何想法如何,我可以使用PARAMS添加該名稱而不是輸入一個靜態值?我想爲用戶的新表單添加一個用戶名字段...可能嗎? –

+0

你可以放任何你想要的東西。我會更新答案 –

+0

哦thankyou :)。 –

相關問題