0

所以我有一个普通用户、一个管理员用户和一个 oauth 用户类型。我更改了很多东西以使它们正常工作,但是现在活动管理员在登录时不再在右上角显示电子邮件地址。

我的apps/admin/user.rb(以前的admin_user.rb)只是普通的ActiveAdmin用户......所以发布它没有意义。

这是已更改的文件(模型中的 users.rb。)

class User < ActiveRecord::Base
acts_as_voter

devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :provider, :uid, :name,     :remember_me
# attr_accessible :title, :body
has_many :posts
has_many :tasks
has_many :dailies
has_many :authentications



 def self.create_with_omniauth(auth)
   create! do |user|
   user.provider = auth['provider']
   user.uid = auth['uid']
   user.password = user.password_confirmation = SecureRandom.urlsafe_base64(n=6)
   if auth['info']
     user.name = auth['info']['name'] || ""
     user.email = auth['info']['email'] || ""
   end
   end
  end
 end

我错过了索引还是什么?

我尝试添加:

index({ email: 1 }, { unique: true, background: true })

但它告诉我没有定义索引方法......

(当我在这里时,我还应该问:该功能是如何工作的?如何在成功登录后让当前用户的电子邮件/用户名显示在某处?以及如何获得“登录”链接以切换到登录后的“注销”链接?)

4

1 回答 1

0

行。这应该很简单。

任何拥有三阶段用户解决方案(用户、管理员用户、oauth 用户)的人都可能遇到此问题。(我只是在最终让 Oauth 工作后才发现解决方案。)在让 OmniAuth 工作后,Active-Admin 倾向于默认使用名称(即 Facebook 用户名)而不是电子邮件地址。这就是为什么它对您的普通用户不显示任何内容的原因,因为默认情况下,他们没有用户名。只是电子邮件地址。

您所要做的就是找到将显示设置为名称的代码部分并将其切换回电子邮件。(无论您的情况如何。)

于 2013-07-08T01:06:40.100 回答