Rails 3:create_association验证失败并删除以前关联的记录

时间:2012-10-30 20:55:44

标签: ruby-on-rails-3 validation activerecord

我们假设我有两个模型。

class User < ActiveRecord::Base
  has_one :blog
end

class Blog < ActiveRecord::Base
  belongs_to :user

  validates_presence_of :user
  validates_uniqueness_of :user_id
end

假设我有一个博客用户。出于某种原因,让我假装我为同一个用户打电话create_blog(我知道它不应该是一个选项,因为用户已有博客)。如果此博客未通过验证,但不会,则不会保存,但会删除用户以前的博客。

为什么会这样?为什么最初的博客会被删除?是期待这种行为还是我遗漏了什么?

1 个答案:

答案 0 :(得分:1)

通过调用create_blog,你告诉Rails放弃以前的博客。没有办法(我知道)不涉及这样的事情:

blog = Blog.new(params[:blog])
if blog.valid?
  user.blog = blog
  user.save
end