持续不断地更新他们的个人资料,“Rails方式”?

时间:2013-09-11 13:13:53

标签: ruby-on-rails ruby ruby-on-rails-4

在我的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方式'是什么?不知何故将逻辑移入应用程序控制器?将逻辑结果加载到会话变量中,以便每次加载页面都不需要检查数据库?

2 个答案:

答案 0 :(得分:0)

在您的模型中添加:

def need_to_update_profile?
  profile.name.blank?
end

这将从视图中删除逻辑。不幸的是,检查数据库的问题要难以避免。好处是rails会缓存sql结果,所以实际上它不会进行太多的数据库调用。

答案 1 :(得分:0)

将其保存在会话中仍然比在数据库中每次检查更好但问题是您每次用户更改其配置文件时都保持会话同步。其次,这个逻辑不应该去模型来使它干,你可以在帮助器中移动它,因为逻辑适用于视图而不是业务逻辑。

希望这会有所帮助。