2

假设我有两个模型。

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的是同一个用户(我知道这不应该是一个选项,因为该用户已经有一个博客)。如果这个博客没有通过验证,它不仅不会保存,而且会删除用户之前的博客。

为什么会这样?为什么最初的博客被删除?这种行为是预期的还是我错过了什么?

4

1 回答 1

1

通过调用create_blog您是在告诉 Rails 放弃之前的博客。没有办法绕过这个(我知道)不涉及做这样的事情:

blog = Blog.new(params[:blog])
if blog.valid?
  user.blog = blog
  user.save
end
于 2012-10-30T21:12:42.787 回答