Валидация не доходит до других моих моделей - PullRequest
0 голосов
/ 22 марта 2010

Хорошо, у меня есть отношения между людьми, пользователями и сотрудниками, так что все сотрудники являются пользователями, а все пользователи - людьми. Person является абстрактным классом, из которого User является производным, а Employee является производным от него.

Теперь ... У меня есть класс EmployeesController, а метод create выглядит следующим образом:

def create
  @employee = Employee.new(params[:employee])
  @employee.user = User.new(params[:user])
  @employee.user.person = Person.new(params[:person])

  respond_to do |format|
    if @employee.save
      flash[:notice] = 'Employee was successfully created.'
      format.html { redirect_to(@employee) }
      format.xml  { render :xml => @employee, :status => :created, :location => @employee }
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @employee.errors, :status => :unprocessable_entity }
    end
  end
end

Как вы можете видеть, когда я использую предложение :polymorphic => true, вы получаете доступ к суперклассу, делая что-то вроде @derived_class_variable.super_class_variable.super_super_etc. У класса Person есть validates_presence_of :first_name, и когда он удовлетворен, в моей форме все в порядке. Однако, если я опущу имя, это не помешает сотруднику быть спасенным. Происходит следующее: запись сотрудника сохраняется, а запись сотрудника - нет (из-за проверки).

Как я могу получить ошибки проверки для отображения во флэш-объекте?

1 Ответ

0 голосов
/ 26 марта 2010

Мне нужно было validates_associated, поэтому у меня будет:

employee.rb

validates_associated :user

user.rb

validates_associated :person
...