2012-04-30 12 views
0

連絡先とユーザー(Devise)の2つのテーブルがあります。 連絡先が作成されるたびにユーザーを作成したいと思います。 接触belongs_toの:ユーザー ユーザーにhas_one:あなたは新しい連絡先を追加するときcontact.rbファイル内のコンタクトRoR Devise create user

次のコードは、ユーザーが作成されます。

before_create :create_user 

protected 
def create_user 
    self.user = User.new({ :email => self.email, :password => '123456' }) 
    return user.save 
end 

しかし、接触フィールドUSER_ID(外国キー)が新しいユーザーIDで更新されていません。 これはどのように達成できますか?

ありがとうございます!

答えて

2

私の推測では、User.new呼び出した後、オブジェクトがデータベースに保存されていないとid属性が割り当てられていない、とidので、関連付けが登録されていないことである

def create_user 
    self.user = User.create({ :email => self.email, :password => '123456' }) 
end 

代わりにこれを試してみてくださいアトリビュートはアソシエーションを記録するために必要なものです。 User.createは、オブジェクトを初期化し、1つのステップでデータベースに保存します(すべての検証が成功したものとします)。

+0

完璧な作業 - ありがとうございました! – Reddirt

関連する問題