我有一个用户现代,其中包含“简介”字段,当用户激活他/她的帐户时,该字段必须与其他详细信息一起填写。 我想强迫用户填写介绍。
我的用户控制器中有这一行。
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
但这不正确。它会重定向它们以更新配置文件。但是当他们尝试更新介绍字段并保存时,它会再次重定向到更新配置文件,因为该介绍尚未保存。
请帮助。感谢。
答案 0 :(得分:4)
在编辑和更新操作上使用skip_before_filter
class UsersController < ApplicaitonController
skip_before_filter :completed_profile, only: [:edit, :update]
end