2013-01-24 37 views
0

我實現了一個簽名/簽出機制,正如Michael Hartl在其教程中建議的(http://ruby.railstutorial.org/chapters/sign-in-sign-out)。所有工作都很完美:從配置文件頁面創建,刪除和更新用戶。子類(STI)的update_attributes上的驗證錯誤

然後我創建了一個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])它很有用,但顯然只適用於老師。

我認爲解決方案很簡單,但我是新手。 任何幫助,將不勝感激!

回答