我们假设我有两个模型。
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
(我知道它不应该是一个选项,因为用户已有博客)。如果此博客未通过验证,但不会,则不会保存,但会删除用户以前的博客。
为什么会这样?为什么最初的博客会被删除?是期待这种行为还是我遗漏了什么?
答案 0 :(得分:1)
通过调用create_blog
,你告诉Rails放弃以前的博客。没有办法(我知道)不涉及这样的事情:
blog = Blog.new(params[:blog])
if blog.valid?
user.blog = blog
user.save
end