0

我有个问题。设计和邮箱安装在我的 Rails 应用程序上没有任何问题。

问题是您必须使用“电子邮件”或“名称”列将设计用户与邮箱关联。显然,设计在用户表中没有名为“名称”的列。因此,如果您使用“电子邮件”,那么用户将看到他们想要隐藏的其他所有人的电子邮件地址。

我想要类似推特的注册。他们有永远不会改变的 unique_id(account name)。要实现这一点,我该怎么做?

I. 将名为“unique_id”的列添加到用户表?命令:rails g migration AddUniqueIdToUsers unique_id:string 创建迁移文件,并像这样打开和编辑

class AddUniqueIdToUsers < ActiveRecord::Migration  
   def change  
    add_column :users, :unique_id, :string  
    add_index :users, :unique_id,  :unique => true  
   end 
end

二、如何使用“unique_id”列将设计与邮箱关联?

提前致谢

4

1 回答 1

2

显然,设计在用户表中没有名为“名称”的列

这完全取决于您,所有 Devise 所做的(或希望您做的)只是添加一些记录来告诉它如何运行。如果您查看设计生成器,您会发现它所做的只是为您的迁移添加了几列。

我想要类似推特的注册。他们有永远不会改变的 unique_id(account name)。要实现这一点,我该怎么做?

首先,在 Rails 中总是免费为您提供一个唯一的 ID(事实上,在大多数使用数据库后端的典型 Web 应用程序中,每一行都有一个唯一的 ID)。

但是,如果您还希望用户选择一个用户名,并且该用户名也是唯一的,那么您可以按照邮箱自述文件的说明name进行操作,并简单地使用您自己的数据库列覆盖使用username,如下所示:

Mailboxer.setup do |config|
  # ...
  #Configures the methods needed by mailboxer
  config.email_method = :email
  config.name_method = :username
  # ...
end

或者,如果您想远离邮箱配置文件,您可以简单地使用alias_method并执行此操作(假设您有一个用户名列):

class User < ActiveRecord::Base
  alias_method :name, :username
  acts_as_messageable
end

无论哪种方式,Devise 都不会限制您在 User 模型上使用哪些列,而且 Mailboxer 似乎也不会限制您使用哪些列将 gem 附加到 User 模型。因此,您可以拥有尽可能多的灵活性,而无需自己构建此功能。

于 2012-06-21T10:21:30.537 回答