【问题标题】:Rails 3, Devise and single table inheritance issueRails 3,设计和单表继承问题
【发布时间】:2011-07-08 13:21:07
【问题描述】:

我在 github 上的一个简单的 rails 项目中重现了我遇到的问题:

运行rails 3.1rc4: https://github.com/demental/devise_sti

运行轨道 3.0.9: https://github.com/demental/devise_sti_rails3

基本上:

  • 我有一个使用设计行为的用户模型
  • 我有继承自 User 的 Admin 模型
  • 我的路由中有两个设计资源。

以管理员身份登录时,我被 authenticate_admin 拒绝!过滤器,就像我是用户一样。

我不知道这是一个问题还是我做错了什么......有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails devise single-table-inheritance ruby-on-rails-3.1


    【解决方案1】:

    回答我自己:

    我有两种方法可以避免这个问题,只在运行测试时出现:

    1. 由于 Devise 映射是从路由中声明的第一个到最后一个 devise_for 迭代的,我可以检查这些行的顺序,并将 devise_for :user 放在最后。检查是使用 is_a 完成的,因此 admin.is_a(User),Admin 被匹配为用户。反转 devise_for 订单使管理员在用户之前匹配。
    2. 我也可以(我猜更干净)在 sign_in 辅助方法中使用 scope 参数:sign_in :admin Factory(:admin)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多