如何使用非null外键保存相关模型

时间:2011-02-06 07:21:46

标签: ruby-on-rails activerecord foreign-keys

我有两种模式:

用户

has_one :email

电子邮件

belongs_to :user

我将email_id外键(NOT NULL)放在users表中。 现在我想用以下方式保存它:

@email = Email.new(params[:email])
@email.user = User.new(params[:user])
@email.save

这会引发db异常,因为不满足外键约束(NULL被插入到email_id中)。我怎样才能优雅地解决这个问题,或者我的数据建模是错误的?

2 个答案:

答案 0 :(得分:1)

这应该按预期工作。

@email = Email.create(params[:email])
@email.user.create(params[:user])

答案 1 :(得分:1)

...坎 你有吗

has_one :email

在您的用户模型中?

如果是这样,我认为存在问题。如果是具有foreign_key的电子邮件表,则应在用户模型中使用has_one。

我认为你应该在电子邮件表中有一个user_id列。