好的,我在人员,用户和员工之间建立了关系,以便所有员工都是用户,所有用户都是人员。 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}},当它满意时,在我的表单上,一切正常。但是,如果我省略名字,则不会阻止员工被保存。发生的情况是员工记录已保存但人员记录未保存(因为验证)。
如何让验证错误显示在flash对象中?
答案 0 :(得分:0)
我需要的是validates_associated
所以我会:
employee.rb
validates_associated :user
user.rb
validates_associated :person