2010-09-14 4 views
10

У меня есть 3 модели: Пользователь, Swatch + Цвет. Пользователь имеет много образцов, а образец указывает цвет.Как показать ошибки проверки из связанной модели в Rails?

Пользователи создают образцы на странице своего профиля (пользователи/show/id).

Цветовая модель обрабатывает валидацию через образец модели с accepts_nested_attributes_for :color и validates_associated :color.

Мой вопрос в том, как показать ошибки проверки цвета на странице профиля пользователя?

Это контроллер образцов. В настоящее время я просто показать общее сообщение об ошибке со вспышкой, но хотел бы получить доступ реального ActiveRecord :: Ошибки от цвета модели:

class SwatchesController < ApplicationController 

    before_filter :authenticate 

    def create 
    color = Color.find_or_create_by_value(params[:swatch][:colors][:value])  
    @swatch = current_user.swatches.build(:color_id => color.id) 

    if @swatch.save 
     flash[:success] = "Swatch created" 
     redirect_to user_path(current_user) 
    else 
     flash[:error] = "Error" 
     redirect_to user_path(current_user)    
    end 
    end 

end 

ответ

24

Вы можете попробовать

flash[:error] = color.errors.empty? ? "Error" : color.errors.full_messages.to_sentence 

Я также думаю, что с validates_associated, @swatch.errors также содержит ошибки для цвета.

+1

@ swatch.errors содержит только ошибки модели образца – meleyal