Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Desive::SessionController将错误添加到闪存中,而不是添加到模型中_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails Desive::SessionController将错误添加到闪存中,而不是添加到模型中

Ruby on rails Desive::SessionController将错误添加到闪存中,而不是添加到模型中,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,Rails:4.0.0, 设计:3.0.0rc Desive似乎根本没有向模型添加错误消息,而是将其委托给验证。一般来说没问题。但是在SessionController的情况下,将错误添加到模型中是否有意义,这样您就可以使用带有错误的字段或一些类似的功能,并且如果用户没有将他们的电子邮件放入,就说“需要电子邮件” 下面的代码片段是我想我必须修改designe的地方,以使它向模型中添加错误 class Users::SessionsController < Devise::SessionsC

Rails:4.0.0, 设计:3.0.0rc

Desive似乎根本没有向模型添加错误消息,而是将其委托给验证。一般来说没问题。但是在SessionController的情况下,将错误添加到模型中是否有意义,这样您就可以使用带有错误的字段或一些类似的功能,并且如果用户没有将他们的电子邮件放入,就说“需要电子邮件”

下面的代码片段是我想我必须修改designe的地方,以使它向模型中添加错误

class Users::SessionsController < Devise::SessionsController

  # POST /resource/sign_in
  def create
    self.resource = warden.authenticate!(auth_options)

    debugger
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)
    respond_with resource, :location => after_sign_in_path_for(resource)
  end

end
class用户::sessioncontroller在(资源)的路径中签名后
结束
结束
有人有什么建议吗?在登录时通过以下方式将错误添加到模型中是否是一个好主意<代码>错误。添加(:型号,“错误消息”)


似乎如果我使用默认的flash[:notice]消息,那么我就错过了将错误消息附加到特定字段的功能,这就是我的目标。

除了SessionController之外,您的概念适用于任何其他控制器

登录活动需要此类模糊信息。如果用户输入了错误的信息,他只能看到“无效的电子邮件或密码”或类似但不精确的错误


原因是为了减少野蛮签名审判的机会

谢谢你的回答!我理解你不应该透露你系统中帐户的信息,我会确保显示的信息永远不会是“那是一个不正确的密码”。更多的是“请输入密码”或“请输入电子邮件”。通知用户他们忘记做某事,而不是声称它只是“无效”。怎么了?如果他们没有投入任何东西,我应该能够告诉他们,他们没有做他们应该做的一切。同时,我正在使用html5表单验证来实现这一点。@Pedro,我理解你的担忧。可以通过覆盖Desive FailureApp来修正这种行为。但我认为您的客户端验证已经足够好了,不需要花费更多的时间。