私のアプリケーションには、「ユーザー」モデルがあります。各ユーザーは、モデル「アドレス」で定義されている複数の (電子メール) アドレスを持つことができます。
Class User < ActiveRecord::Base
has_many :addresses
def is_authorized(op)
# returns true or false
end
def is_owned_by(user)
# returns true or false
end
end
Class Address < ActiveRecord::Base
belongs_to :user
end
AddressController クラス内では、現在ログインしているユーザーが "@user" インスタンス変数で利用できます。コントローラーは、通常のユーザーが自分に属していないアドレスを編集、削除、表示などできないようにしますが、管理ユーザーがそれらを編集することは許可します。AddressController クラスは、現在ログインしているユーザーが通常の操作を実行しているか、スーパーユーザーの操作を実行しているかを AddressModel に問い合わせることができます。
これはすべてうまく機能し、データベースの更新は期待どおりに行われますが、操作モードに応じて異なる HTML ビューが必要です。それを達成するための2つの方法しか考えられません。
- (@privileged などのインスタンス変数を使用して) AddressController クラスで認識される操作モード (通常/特権) を作成し、ビューで「if」ステートメントを使用します。
- アドレス コントローラーで「after_filter」などを使用して、別のレイアウトをレンダリングします。
単一のコントローラーを実行した結果を、その操作モードに応じて 2 つのまったく異なるレイアウトで表示できる場合、それを実現するための良い方法は何ですか?
前もってありがとうステファン