Estoy realmente atascado en un problema donde tengo un modelo de usuario y perfil. lo que intento parece validaciones no se activan para cualquiera de los atributos del perfilgrave atascado en: validaciones no activadas para el recurso anidado con fields_for
- El modelo de perfil pertenece al usuario. Perfil
- El formulario de registro utilizando fields_for tener algunos campos de perfil que se muestran (de género, y la ciudad y país)
- Lo he intentado, soy incapaz de dejar el trabajo de validación para género y la ciudad (el perfil del usuario fields_for has_one campos)
Mi forma:
- title t(:title, :scope => :register)
%h1= yield(:title)
= simple_form_for(resource, :as => resource_name, :html => { :class => 'form-horizontal' } , :validate => true , :url => registration_path(resource_name)) do |f|
= f.input :username, :label => t(:username)
= f.input :email, :label => t(:email),
:hint => t(:hint_email_visible)
= f.input :password, :label => t(:password), :require => true
= f.input :password_confirmation, :label => t(:password_confirm)
- resource.build_profile
= f.fields_for :profile do |f|
#div
= f.hidden_field :form, :value => "signup"
.clear
= f.input :gender, :collection => [['Male', 'male'], ['Female', 'female']],
:as => :radio
= f.input :city,
:readonly => "readonly",
:label => t(:city)
.ruler
= f.input :country,
:label => "Your country",
:collection => [DataCountry.where(:code => 155).first],
:value => @city,
:id => "country",
:name => "country"
.clear
= f.button :submit, t(:submit, :scope => :register) + " »"
Mi modelo de usuario tiene esto:
accepts_nested_attributes_for :profile
Mi Modelo de perfil con validaciones es como:
validates_presence_of :gender
validates_presence_of :city
validates_presence_of :country
Mis PARAMS: consola
-- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
authenticity_token: <mytokenhere>
user: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
invite_code: ''
username: username
email: ''
password: ''
password_confirmation: ''
profile_attributes: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
form: signup
gender: male
dob(3i): '9'
dob(2i): '7'
dob(1i): '1942'
city: 'somevalue'
country: 'somevalue'
commit: Register »
action: create
controller: registrations
rieles hace:
User.new
=> #<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, password_salt: nil, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil, authentication_token: nil, username: nil, is_blocked: nil, is_deleted: nil, role: nil, slug: nil, created_at: nil, updated_at: nil, last_seen: nil, credits: nil, invite_code: nil, is_moderated: nil, locale: nil, status: nil, login_token: nil>
Profile.new
=> #<Profile id: nil, user_id: nil, gender: nil, country: nil, state: nil, city: nil, status: nil, counter_cache: nil>
- Actualización 19 de Jul '12
he añadido el
- @user.errors.full_messages.each do |message|
= message
.clear
Para la forma de ver qué es exactamente lo que está sucediendo y esto arroja el siguiente lista de errores:
Email can't be blank
Email can't be blank
Password can't be blank
Password can't be blank
Profile city can't be blank
Profile gender can't be blank
Profile is invalid
Username can't be blank
Password confirmation can't be blank
Parece que la validación está marcada .... ¡Pero no se aplica ningún estilo de error! Además, el perfil no es válido ??? No estoy seguro, pero eso se refiere a
Intenta cambiar a 'validates_inclusion_of: gender, in:% w (male female)' y mira si te da un mensaje de error –
Thx lo intentó sin éxito. Lo intento con algunos otros campos de perfil que agregaré al formulario, quizás sea un problema relacionado con el género – Rubytastic
¿Has intentado poner 'validates_associated: profile' en tu modelo' User'? – HargrimmTheBleak