我使用rails4创建了一个Web应用程序,并使用devise_ldap_authenticable gem开发了身份验证系统。 我在哪里使用用户名登录而不是电子邮件。但我想在我的用户表中存储电子邮件。 我的用户模型是
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
#@attr_accessible :email, :password, :password_confirmation
# not required for LDAP :recoverable, :registerable, :validatable
devise :ldap_authenticatable, :rememberable, :trackable
validates_uniqueness_of :email, :allow_blank => true
before_save :get_ldap_email
def get_ldap_email
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username, "mail")
end
end
但在电子邮件领域的用户表中,其存储数据如
`email` = '--- !ruby/array:Net::BER::BerIdentifiedArray\ninternal:\n- !ruby/string:Net::BER::BerIdentifiedString\n str: !binary |-\n cy5naG9zaEBzYW1zdW5nLmNvbQ==\n ber_identifier: 4\nivars:\n :@ber_identifier: 49\n'
我的日志说 LDAP:请求的参数邮件具有值[“s.ghosh@example.com”]
我将如何将此值存储到users表中。哪里我做错了?请帮帮我。
答案 0 :(得分:0)
只需添加以下内容即可完全正常
def get_ldap_email
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username, "mail").first
end