Rails4 - 如何强制用户更新他/她的个人资料中的字段?

时间:2015-05-29 09:47:01

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

我有一个用户现代,其中包含“简介”字段,当用户激活他/她的帐户时,该字段必须与其他详细信息一起填写。 我想强迫用户填写介绍。

我的用户控制器中有这一行。

validates :intro,  presence: true, length: { maximum: 300 }, on: :update     

但是用户可以点击网页上的其他链接并使用该网站而无需填写介绍。我想强迫他们更新自己的个人资料,如果他们没有正确填写他们的个人资料,就不要让他们访问网站。

我在我的应用程序控制器中尝试了这个。

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  rescue_from ActiveRecord::RecordNotFound, with: :render_404

  include SessionsHelper

  before_filter :completed_profile      

  private    

    def completed_profile
      if logged_in?

        if current_user.user_languages.count == 0 || current_user.user_learnings.count == 0 

          if current_user.intro.blank?
            flash[:introdiv] = "Introduction can't be blank."
          end

          redirect_to edit_user_path(current_user)
        end
      end
    end         
end

但这不正确。它会重定向它们以更新配置文件。但是当他们尝试更新介绍字段并保存时,它会再次重定向到更新配置文件,因为该介绍尚未保存。

请帮助。感谢。

1 个答案:

答案 0 :(得分:4)

在编辑和更新操作上使用skip_before_filter

class UsersController < ApplicaitonController
  skip_before_filter :completed_profile, only: [:edit, :update]
end