2013-12-01 2 views
1

Теперь я не совсем уверен, какая структура данных это ... кажется, это хэш двух именованных хэшей, @base и @messages.Эхо-специфическое значение хэша

#<ActiveModel::Errors:0x00000103a9cc80 @base=#<User id: nil, first_name: "Jimmy", last_name: "Thehat", profile_name: "Jimbohatboy", email: "[email protected]", encrypted_password: "$2a$04$MX40ryz4CU2jRuE4Pfy5.eRUz3rRZkmsvw7FXQyE6Bj1...", 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, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil, created_at: nil, updated_at: nil>, @messages={}> 

Я знаю, как печатать данные в ключевой записи, но не с этим. Как я могу перебрать хеш @messages?

+1

эту работу? 'activemodel_obj.messages.each {...}' –

+1

Да, это сработало, спасибо – Starkers

ответ

1

Это объект ActiveModel :: Errors (как говорится). Найти список методов здесь: http://api.rubyonrails.org/classes/ActiveModel/Errors.html

Например:

obj.full_messages.each { |error| puts error }  
будет
+0

Практически это сообщения, но не full_messages – Starkers

+0

@Starkers: Правильно, так как вы попросили (внутренний) '@ messages' хэш , Обычно я предпочитаю использовать массив, возвращаемый 'full_messages', потому что он включает в себя некоторую магию (например, имена переведенных атрибутов и т. Д.). – spickermann

Смежные вопросы