Ruby on rails 设计覆盖会话控制器

Ruby on rails 设计覆盖会话控制器,ruby-on-rails,devise,Ruby On Rails,Devise,我想在用户尝试登录但未确认时添加一条消息,我想在通知部分显示此消息,基本上设计需要向我们提供此消息,但在这种情况下我看不到任何消息。因此,我决定从sessions controller手动添加它。以下是我的代码: class SessionsController < Devise::SessionsController def new super end def create user = User.find_by_email(params[:user][:

我想在用户尝试登录但未确认时添加一条消息,我想在通知部分显示此消息,基本上设计需要向我们提供此消息,但在这种情况下我看不到任何消息。因此,我决定从sessions controller手动添加它。以下是我的代码:

class SessionsController < Devise::SessionsController

  def new
    super
  end

  def create
    user = User.find_by_email(params[:user][:email])

    self.resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_flashing_format?
    sign_in(resource_name, resource)

    if user.confirmed_at.nil?
      flash[:notice] = "my message here"
    end
    yield resource if block_given?

    respond_with resource, location: after_sign_in_path_for(resource)
  end

end

如何显示此消息?

更简单的方法是在应用程序\u控制器中添加前过滤器:确认\u通知,并检查当前用户是否已确认?或者不是

例::

不要忘记配置视图以显示此flash通知


了解如何配置视图。

flash在第页仍然为空。您是否像提供的链接一样在视图中添加了flash循环?我的flash对象是这样的#“在继续之前,您必须确认您的帐户。”},@now=nil>这意味着您需要确认,这意味着没有确认电子邮件,任何人都无法登录。若要允许在不确认的情况下登录,请使用。跳过确认!看一看覆盖装置是否需要确认?模型中的方法。
Started POST "/users/sign_in" for 127.0.0.1 at 2014-11-18 15:07:21 +0200
Processing by SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"xC86tz4kZjcSMqXOL/+qpwlh5VlSbnsvLj93N5jb3NI=", "user"=>{"email"=>"pers.maki.5@gmail.com", "password"=>"[FILTERED]"}, "commit"=>"Sign in"}
   (0.2ms)  SELECT COUNT(*) FROM "landing_page_reports" 
  LandingPageReport Load (0.2ms)  SELECT "landing_page_reports".* FROM "landing_page_reports" ORDER BY "landing_page_reports"."id" DESC LIMIT 1
  User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'pers.maki.5@gmail.com' LIMIT 1
  CACHE (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'pers.maki.5@gmail.com' LIMIT 1
   (0.1ms)  begin transaction
   (0.2ms)  commit transaction
Completed 401 Unauthorized in 193ms
before_filter :confirmation_notice

def confirmation_notice
  flash[:notice] = "my message here" unless current_user.confirmed?
end