ユーザーがログインできるWebサイトに取り組んでいます。すべてのユーザーは 1 つのアカウントを持ち、1 つのアカウントは複数の注文を持つことができます。ユーザーは、クライアント、ワーカー、またはマネージャーの場合があります。クライアントは決して労働者でも管理者でもありません。マネージャーも労働者です。ログインしているユーザーのタイプに応じて、ページ/ナビゲーション オプションの追加セクションを提示したいと思います。
現在、一連のブール値を使用してユーザーを特定のタイプとしてマークし、その値をテストし、いくつかの if/elsif ブロックを実行して、ユーザーに表示されるページを生成しています。
class User
include DataMapper::Resource
# ...
# various properties
# ...
property :client, Boolean
property :worker, Boolean
property :manager, Boolean
end
次に、前フィルターを使用してユーザーの種類をテストし、結果を変数として設定しています。
before do
@user = session[:user]
if @user.client?
@ura = 'client'
elsif @user.worker?
@ura = 'worker'
elseif @user.manager?
@ura = 'manager'
end
end
それから私の見解では、@ura で遊んでいます。@ura はワーカーとマネージャーの両方である必要があるため、これはすでにマネージャーに問題を引き起こしているように思えます。ビューで or を使用することもできますが、より良い解決策は、ユーザー タイプを Enum または Flag として設定することだと思います。しかし、自分のプロセスでそれを使用する方法がよくわかりません。
それぞれの長所/短所と、@ura で適切な値を得る方法の基本的な例を知りたいです。