0

連絡先とユーザー(デバイス)の2つのテーブルがあります。連絡先を作成するたびにユーザーを作成したいと思います。連絡先belongs_to:userユーザーhas_one:contact

contact.rbファイルの次のコードは、新しい連絡先を追加するときにユーザーを作成します。

before_create :create_user

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

ただし、連絡先フィールドuser_id(外部キー)は新しいユーザーIDで更新されていません。どうすればそれを達成できますか?

ありがとう!

4

1 に答える 1

2

代わりにこれを試してください

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

私の推測では、User.new呼び出し後にオブジェクトがデータベースに保存されておらず、id属性が割り当てられていないため、関連付けが登録されていません。id属性は、関連付けを記録するために必要なものです。User.createオブジェクトを初期化し、1つのステップでデータベースに保存します(すべての検証に合格したと想定)。

于 2012-04-30T17:50:41.173 に答える