2010-12-29 7 views
0

私は学生、労働者、管理者などのいくつかのモデルを使用してプロジェクトを持っている....もちろん ものはsite.Soに異なる権利を取得し、私は思っていた:ユーザの認証

は、私は別のビューからそれらをログに記録する必要がありますか?その形式のビューのそれぞれは、その時点で1つの(既知の)モデルを扱うか、3つを1つにすることも同様に簡単です。

私は1つのビューを作ってみましたが、私が持っていた最初の問題は、ログインしたユーザーの種類を認識している、したがって、...私は次のショーべきかビュー知るための基本的なの

答えて

1

一つの問題でした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に電話をしていないと、私はうんざりしています。認証を扱うための宝石であり、自分で認証方法を作成することを考えているならば、多くの作業と労力を費やすことになります。

+0

私はこのスタイルを実装し、結果については確実に書き戻します – Daniel

関連する問題