【问题标题】:Rails 3: create_association fails validation and deletes previous associated recordRails 3:create_association 验证失败并删除以前的关联记录
【发布时间】:2012-10-30 20:55:44
【问题描述】:

假设我有两个模型。

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

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

【问题讨论】:

  • 介意我问一下您是如何实施验证的?是自定义保存后检查,还是使用 Rails 验证?
  • 我正在使用 Rails 验证。我已经更新了我的问题,显示他们

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多