当有很多模型时,Rails设计STI或多态?

时间:2010-12-30 15:37:18

标签: ruby-on-rails authentication associations devise polymorphic-associations

我有问题。我无法弄清楚如何用设计解决这个身份验证问题,我不知道我是否应该在模型或STI中使用多态关联。

我有2个模型,如老师和学生。而我正在尝试建立多态关联。

这是我的模特:

   Teacher model:
        class Teacher < ActionController::Base
        has_one :user, :as => :profileable 
        devise :database_authenticatable, :registerable 
        end
    Student model:
        class Student < ActionController::Base
        has_one :user, :as => :profileable 
        devise :database_authenticatable, :registerable 
        end
    User model:
        class User < ActionController::Base
        belongs_to :profileable, :polymorphic => true
         attr_accessible :email, :password, :password_confirmation, :remember_me
        end

我的routes.rb

School::Application.routes.draw do
  devise_for :users
  devise_for :teachers
  devise_for :students

我为教师和学生创建了视图文件。 但我无法弄清楚如何拥有1个用户表和不同的视图和sign_up页面。

我想要2个注册页面。一个给老师,一个给学生。我希望User表存储登录信息(电子邮件,密码......)。

如何使用设计创建这样的东西?

致以最诚挚的问候,

Rails初学者

1 个答案:

答案 0 :(得分:2)

我会选择STI并使用存储用户优先权等的配置文件模型。至于每个模型的不同视图,请查看范围视图部分。