当孩子无效时,Mongoid accepted_nested_attributes_for保存父母

时间:2012-01-12 19:53:45

标签: ruby-on-rails ruby ruby-on-rails-3 mongodb mongoid

我正在尝试使用accepts_nested_attributes_for在创建User期间创建Organization。我的问题是即使嵌套的Organization信息无效,也会创建User(假设它有有效信息)。

我的模特看起来像这样:

class Organization
  include Mongoid::Document

  attr_accessible :name, :users_attributes

  field :name, :type => String

  has_many :users, dependent: :destroy
  accepts_nested_attributes_for :users, :limit => 1

  validates_presence_of :name
end

class User
  include Mongoid::Document

  authenticates_with_sorcery!

  attr_accessible :email, :password, :password_confirmation

  field :email, type: String

  validates_confirmation_of :password, :if => :password
  validates_presence_of :password, :on => :create 
  validates :password, :length => { :minimum => 6 }
  validates_presence_of :password_confirmation, :if => :password
  validates_presence_of :email
  validates_uniqueness_of :email

  belongs_to :organization
end

所以基本上,我传入一个有效的组织和一个无效的用户。最终结果是尽管用户信息无效,组织仍然正确创建。想法?

1 个答案:

答案 0 :(得分:0)

事实证明,这里的问题是我没有在:autosave => true关联上指定has_many :users。最终结果是它将创建组织并且从不尝试保存关联用户,因此不知道它是无效的。当我将:autosave标志设置为true且用户无效时,组织不会保存。