正如 Michael Hartl 在他的教程 ( http://ruby.railstutorial.org/chapters/sign-in-sign-out ) 中建议的那样,我实现了一个登录/注销机制。一切都很完美:从个人资料页面创建、删除、更新用户。
然后我创建了一个Teacher
模型作为User
(STI)的子类。它没有自己的验证,应该使用与父模型(用户)相同的验证。但是更新 type = "Teacher" 用户的属性是不可能的(对于其他用户它继续工作)。当我编译更新表单时,它返回:
`错误消息说我teacher.attributes.password 缺少验证
而老师应该继承用户的相同验证。
在 routes.rb 中,创建教师模型后,我添加了:
resources :teachers, :controller => 'users', :type => "Teacher"
这是用户控制器中的更新方法:
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
redirect_to @user ...
如果我将 @user.update_attributes(params[:user]) 更改为 @user.update_attributes(params[:teacher]) 它可以工作,但显然只适用于老师。
我认为解决方案很简单,但我是新手。任何帮助,将不胜感激!