一つの問題でしたRailsの背後にある哲学はDRYです - あなた自身を繰り返さないでください。この考え方に従えば、3つの別個のログイン画面を持つことはむしろ冗長なようです。
同じように、学生、労働者、管理者を別々のモデルにまとめることは、実用的ではないようです。すべてのユーザーは、おそらく名前、電子メール、パスワード、その他の情報を持っています(おそらく)。私は1つのモデルしか持っていないでしょうし、そのモデルをそれと呼んでください - User
。その後、私はこのようなユーザーグループを設定することができます。
突然
class User < ActiveRecord::Base
belongs_to :user_group
end
class UserGroup < ActiveRecord::Base
has_many :users
end
User.first.user_group # => <UserGroup name: 'Students'>
User.find(123).user_group # => <UserGroup name: 'Workers'>
UserGroup.find_by_name('Administrators').users # => [<User ...>, <User ...>, ...]
、ログインはもはや問題ではありません。ユーザーはユーザーとして認証され、アプリケーションは自分がどのユーザーグループに属しているかをすぐに認識し、適切な情報をそのように表示できます。
また、私がDeviseに電話をしていないと、私はうんざりしています。認証を扱うための宝石であり、自分で認証方法を作成することを考えているならば、多くの作業と労力を費やすことになります。
私はこのスタイルを実装し、結果については確実に書き戻します – Daniel