Ruby on Rails Active Admin:登录后不显示电子邮件

时间:2013-07-05 06:24:00

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 omniauth activeadmin

所以我有一个普通用户,一个管理员用户和一个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 })

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

(虽然我在这里,但我也应该问:这个功能如何运作?如何在成功登录后让当前用户的电子邮件/用户名显示在某个地方?如何获得“登录”链接登录后切换到“注销”链接?)

1 个答案:

答案 0 :(得分:0)

确定。这应该很简单。

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

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