Rails:关键字段存在检查的嵌套模型验证失败

时间:2012-06-12 21:11:43

标签: ruby-on-rails-3 validation nested-forms nested-attributes

我有一个模型用户和一个嵌套模型Mobility

class User < ActiveRecord::Base
   has_many :mobilities, :dependent => :destroy
   accepts_nested_attributes_for :mobilities
end

class Mobility < ActiveRecord::Base
  belongs_to :mobile_user, :class_name =>  'User'
  validates :city_id, :presence =>true
  validates :user_id, :presence =>true
  validates :city_id, :uniqueness => {:scope => [:user_id]}
end

我的观点

=form_for @user, :as => :user, :html =>{ :class => 'form-horizontal'} do |f|
  =f.fields_for :mobilities  do |city_form|
    =city_form.text_field :city_id, :id => "city_id_#{index}"
    = f.submit "Retour"

我的问题是,当我提交表单时,Rails会将此验证错误呈现给我:

  

移动用户&gt; doitêtrerempli(e)

但如果我评论这一行:

#validates :user_id, :presence =>true

我的Mobility和User对象都得到保存并知道:@mobility的user_id字段是否正常(表示我的@用户ID)

如果我发送内部具有2个相同移动性的表单,则两个模型都会保存,但似乎我的唯一性验证没有检查任何内容,因为我在我的数据库中有2个具有相同user_id和city_id的Mobility对象...

事实上,在验证时我的验证似乎无法读取我的user_id密钥。 我明白,因为我的用户模型还没有得到保存但还没有任何ID ......但这是我的问题:

我如何检查两者:user_id的存在和范围的唯一性???

0 个答案:

没有答案