0

私の Rails アプリケーションでは、ユーザーがプロファイルを更新するまで、プロファイルを更新するようにという警告通知が表示されるようにしたいと考えていました。具体的には、彼らにできるだけ早く名前を記入してもらいたいのですが、サインアップ中には記入してほしくありません。そこで、アプリケーション レイアウトに読み込まれるパーシャルに次のように記述しました。

<% if user_signed_in? && current_user.profile.name == nil %>
    <div class="alert alert-warning alert-dismissable">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    Please fill in your Profile as soon as possible. This information is important for you to use the application properly.     
    <%= link_to "Do it now", edit_profile_path(current_user) %>
    </div>
<% end %>

しかし、私はこれを行うには本当に不格好な方法だと感じています。まず、これは、サインインしたユーザーがページにアクセスするたびに、プロファイルのデータベース チェックも行われることを意味します。次に、ビューのロジックです。

だから私の質問は、これを行うためのより「Railsの方法」は何でしょうか? どういうわけか、ロジックをアプリケーション コントローラーに移動しますか? ロジックの結果をセッション変数などにロードして、ページをロードするたびにデータベースをチェックする必要がないようにしますか?

4

2 に答える 2

0

セッションに保存することは、DB で毎回チェックするよりも優れていますが、問題は、ユーザーがプロファイルを変更するたびにセッションの同期を維持することです。第二に、このロジックはモデルに移動して DRY にするべきではありません。ロジックはビューに適用され、ビジネス ロジックではないため、ヘルパーに移動できます。

これが役立つことを願っています。

于 2013-09-11T13:34:24.153 に答える