Rieles: falla la validación de un modelo anidado en la verificación de presencia de campo clave

Tengo un modelo Usuario y un modelo anidado Movilidad

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

y

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

mi vista

=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"

mi problema es que cuando envío el formulario, Rails me muestra este error de validación:

Mobility usuario > doit être rempli(e)

Pero si comento esta línea:

#validates :user_id, :presence =>true

Tanto mis objetos Mobility como User se guardan y saben qué: el campo user_id de @mobility está bien (indica la ID de mi @usuario)

Si envío el formulario con 2 movilidades idénticas adentro, ambos modelos se guardan, pero parece que mi validación de unicidad no verificó nada porque tengo 2 objetos Mobility con el mismo ID_usuario y ID_ciudad en mi base de datos...

De hecho, parece que mi validación no puede leer la clave de mi ID de usuario al validar. Lo entiendo porque mi modelo de usuario aún no se guardó y aún no tiene ninguna identificación ... pero esa es mi pregunta:

¿Cómo puedo verificar ambos: presencia de user_id y singularidad con alcance?

preguntado el 12 de junio de 12 a las 22:06

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.