2009-07-28 8 views
2

私はユーザー名、電子メール、故郷などの情報を含むユーザーモデルを持っています。ユーザーがログインすると、彼はショーページ(たとえば/ users/723)から情報を編集できます。Railsで公開プロフィールを表示するには?

このページの「公開」バージョンは、ログインしていないユーザーや他のユーザーとしてログインしているユーザーが閲覧できるようにしたいと考えています。それは、ユーザーに関するさまざまなレベルの情報を持ち、情報を編集するためのリンクを持たないでしょう。

このページの3つの異なるバージョンを正しく表示する最もクリーンな方法は何ですか?

補遺

私は現在、認証にはauthlogicを、アクセス制御にはacl9を使用しています。しかし、私はこれを認証と認可の問題としては見ません。コントローラ/ビューデザインの問題だと思う。ユーザーがログインしているか情報を所有しているかは、付随的です。いくつかのセッション状態に基づいて3つの異なる方法でウィジェットを表示したい場合は、この質問に対する答えを使用できると思います。

答えて

4

これにはたくさんの方法がありますが、私は最もクリーンな方法はないと思います。

私はおそらくページを部分的に分割します。必要な情報のグループごとに部分的に分割します。

次に、どのパーシャルがレンダリングされるかを変数で制御できます。あなたがもしものが手に負えなくなっている場合、

代わりに(と部分を持っていない)、あなたはインラインでき

- if @admin 
    render :partial => 'admin_panel' 

本当のシンプルなものの場合:(HAMLで)例えば

各「ショー」ページごとに異なるビューを持つことができます。

+0

私はこの点でサムと同意しますが、違いによってはインラインで変更するほうが意味があるかもしれません。たとえば、管理者のクイック編集機能を有効にしたいサイトでは、ビュー内のシンプルな状態ですが、違いがあまりない場合は部分的な部分にパントしたくありません。 – scottru

0

ユーザプロファイルについては、ユーザ認証の場合は、Authlogicをお勧めします。すべてが非常にシンプルになり、とてもうまく設計されています。それ以外の場合は公に閲覧可能です、

before_filter :require_login, :only => [:edit, :update] 

はその後、編集(したがって、更新するポスト)に行くにはログインする必要があります:あなたは基本的に言う前にフィルタを追加します。

hereからサンプルアプリケーションをダウンロードできます。

また、OpenID、LDAP、Facebook Connect、OAuth(Twitter)との統合もサポートしています(上記リンク先のプロジェクトのgithubページで説明しています)。

私の答えが役に立ったら嬉しいです。

+0

@Mike、OPにはすでに認証と承認を行うための方法があると思います。彼は自分の見解をきれいに壊す方法を探しています。 –

+0

@Sam、私は理解していますが、Authlogicは文字通り、彼が探している機能を含む「ドロップインアンドゴー」のソリューションです。彼が見つけられなかったかもしれないという示唆に過ぎず、私はそれが言及に値すると思った。 –

1

第2のコントローラー(たとえば、メンバープロフィールコントローラー)を作成する必要があります。 したがって、ユーザー編集エリアをパブリックアクセスエリアから分割することができます。

関連する問題