2011-06-06 54 views
1

我正在使用devise & devise_invitable在一個rails 3項目中,我試圖操縱設計控制器中的一些'User'對象字段。Rails 3:在控制器中操作設計「資源」?

的動作是問題是:

def update 
    self.resource = resource_class.accept_invitation!(params[resource_name]) 

    resource.first_name = 'Lemmechangethis' 

    if resource.errors.empty? 
     set_flash_message :notice, :updated 
     sign_in(resource_name, resource) 
     respond_with resource, :location => after_accept_path_for(resource) 
    else 
     respond_with_navigational(resource){ render_with_scope :edit } 
    end 
    end 

我會認爲(註釋掉)resource.first_name調用將在大致相同的方式作爲一種模式影響的資源 - 但事實並非如此似乎。我仍然在這個表單上發現'空白'驗證錯誤。

所以,問題是,我如何在devise(和/或devise_invitable)中爲用戶模型指定實際需要驗證的值?

讚賞任何建議, 約翰

回答

2

resource不返回用戶模型實例。因此,resource.first_name = 'Lemmechangethis'聲明確實會更改您的用戶模型實例,但它不會觸發您的用戶模型驗證,這可能是爲什麼resource.errors始終返回一個空數組。例如,觸發用戶模型驗證的一種方式是致電resource.valid?。然後您可以檢查resource.errors陣列以獲取特定的錯誤消息。

+0

嘿謝謝你們,但你知道我在哪裏瞭解更多關於「資源」? – BKSpurgeon 2016-07-08 05:39:03

相關問題