验证没有冒泡到我的其他型号

时间:2010-03-22 05:42:54

标签: ruby-on-rails validation polymorphism event-bubbling

好的,我在人员,用户和员工之间建立了关系,以便所有员工都是用户,所有用户都是人员。 Person是一个抽象类,User派生自EmployeeEmployeesController源于此。

现在......我有一个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}},当它满意时,在我的表单上,一切正常。但是,如果我省略名字,则不会阻止员工被保存。发生的情况是员工记录已保存但人员记录未保存(因为验证)。

如何让验证错误显示在flash对象中?

1 个答案:

答案 0 :(得分:0)

我需要的是validates_associated所以我会:

employee.rb

validates_associated :user

user.rb

validates_associated :person