错误处理 - 电子邮件 LDAP - Rails
Error Handling - Email LDAP - Rails
我是 Rails Ruby 的初学者,我需要帮助
在我的项目中,我需要在 LDAP 上捕获用户的电子邮件。
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :ldap_authenticatable,:rememberable, :trackable
#validates :username, presence: true, uniqueness: true
validates :email, presence: true
validates_uniqueness_of :email
before_validation :get_ldap_email
before_save :get_ldap_email
def get_ldap_email
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail").first
end
但如果在 LDAP 中没有电子邮件,则会显示 Rails´ 错误消息,我想重定向到包含我发出的消息的页面。
所以,我想在 SessionController 中创建一个 "if",但我没有成功调用该方法。
class Users::SessionsController < Devise::SessionsController
require_relative '../../models/User.rb'
def create
super
if get_ldap_email == nil
# redirect to /errorlogin
end
end
这里显示消息
undefined local variable or method `get_ldap_email' for #
Users::SessionsController:0x67342e0>
我还为此修改了用户...
def get_ldap_email
ldapEmail = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail")
if ldapEmail == nil
else
self.email = ldapEmail.first
end
end
但是现在显示这条消息
Validation failed: Email can't be blank
我不知道我需要做什么...
问题是您在 get_ldap_email
之前调用 super
,因此 Devise SessionController
中的验证正在检查有效的电子邮件。这应该有效:
def create
if get_ldap_email == nil
# redirect to /errorlogin
end
super
end
我是 Rails Ruby 的初学者,我需要帮助
在我的项目中,我需要在 LDAP 上捕获用户的电子邮件。
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :ldap_authenticatable,:rememberable, :trackable
#validates :username, presence: true, uniqueness: true
validates :email, presence: true
validates_uniqueness_of :email
before_validation :get_ldap_email
before_save :get_ldap_email
def get_ldap_email
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail").first
end
但如果在 LDAP 中没有电子邮件,则会显示 Rails´ 错误消息,我想重定向到包含我发出的消息的页面。
所以,我想在 SessionController 中创建一个 "if",但我没有成功调用该方法。
class Users::SessionsController < Devise::SessionsController
require_relative '../../models/User.rb'
def create
super
if get_ldap_email == nil
# redirect to /errorlogin
end
end
这里显示消息
undefined local variable or method `get_ldap_email' for #
Users::SessionsController:0x67342e0>
我还为此修改了用户...
def get_ldap_email
ldapEmail = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail")
if ldapEmail == nil
else
self.email = ldapEmail.first
end
end
但是现在显示这条消息
Validation failed: Email can't be blank
我不知道我需要做什么...
问题是您在 get_ldap_email
之前调用 super
,因此 Devise SessionController
中的验证正在检查有效的电子邮件。这应该有效:
def create
if get_ldap_email == nil
# redirect to /errorlogin
end
super
end