1

我轉載我得到一個簡單的Rails項目可以在GitHub上的問題:Rails 3中,設計和單表繼承問題

運行軌道3.1rc4: https://github.com/demental/devise_sti

運行軌道3.0.9: https://github.com/demental/devise_sti_rails3

基本上是:

  • 我有一個用戶模式,使用設計的行爲
  • 我有管理模式,繼承自用戶
  • 我有兩個設計資源在我的路由。

以管理員身份登錄時,我被authenticate_admin拒絕!過濾器,就像我是一個用戶一樣。

我不知道這是一個問題,或者如果我做錯了什麼......任何想法?

回答

0

回答自己:

我有兩種方法來避免這個問題,只有發生運行測試時:

  1. 隨着設計的映射,從第一個到最後devise_for宣佈在路由迭代,我可以檢查這些行的順序,並將devise_for:user放在最後。該檢查用is_a完成,因此admin.is_a(用戶),Admin與用戶匹配。反轉devise_for命令使得Admin在用戶之前匹配。
  2. 我也可以(更清潔我猜)使用範圍參數在sign_in幫助器方法中:sign_in:admin Factory(:admin)