首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用用户名创建帐户

使用用户名创建帐户
EN

Stack Overflow用户
提问于 2013-07-01 19:06:12
回答 2查看 262关注 0票数 0

我遵循了设计wiki,以启用用户名登录与设计(而不是电子邮件)。但我不知道如何启用用户名注册/注册的设计。

我已将注册视图更改为提示输入姓名和密码。

应用程序/视图/设计/注册/new.html.erb:

代码语言:javascript
运行
复制
<h3>Sign up</h3>

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>
  <div><%= f.label :firstname, "First Name", :autofocus => true %><br />
  <script type="text/javascript">window.onload = function() {document.getElementById('user_firstname').focus();}</script>
  <%= f.text_field :firstname %></div>

  <div><%= f.label :lastname, "Last Name", :autofocus => true %><br />
  <%= f.text_field :lastname %></div>

  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>

  <div><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></div>

  <div><%= f.submit "Sign up" %></div>
<% end %>

<%= render :partial => "devise/shared/links" %>

我已经编辑了我的模型,以便从名字和姓氏生成用户名:

app/models/user.rb

代码语言:javascript
运行
复制
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:username]

  # Setup accessible (or protected) attributes for your model
  #attr_accessor :username
  validates_presence_of :firstname, :lastname, :unique => true 
  after_validation :createUsername
  attr_accessible :username, :password, :password_confirmation, :remember_me, :firstname, :lastname
  #attr_protected :password

  def createUsername
    # create username from first-last name
    firstnamePart=self.firstname[0,1].downcase
    lastnamePart=self.lastname[0,5].downcase
    username=lastnamePart + firstnamePart
    count=0
    while username.length != 7
      username=username + count.to_s
      count +=1
    end
    self.username=username
    #verify username uniqueness?
  end


  def self.find_first_by_auth_conditions(warden_conditions)
      conditions = warden_conditions.dup
      if login = conditions.delete(:login)
        where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
      else
        where(conditions).first
      end
    end
end

但是,当我尝试注册时,我会得到以下错误。文字将不得不这样做,因为我没有足够的“声誉”来发布图片:

代码语言:javascript
运行
复制
Sign up
1 error prohibited this user from being saved:
Email can't be blank

因此,在注册/注册阶段,devise仍在寻找一封电子邮件。我想我必须编辑didn的控制器,但是它没有安装在下面的命令中

  1. rails g装置:安装
  2. rails g设计用户
  3. rails g设计:视图

因此,我的rails应用程序可能使用的是默认的设计控制器(/usr/local/rvm/gems/ruby-2.0.0-p195/gems/devise-1.5.4/app/controllers/devise/registrations_controller.rb),但我没有在其中看到任何对“电子邮件”的引用。

如何在注册/注册期间更改接受用户名的设计?任何帮助都将不胜感激。

EN

Stack Overflow用户

发布于 2013-07-01 19:13:02

您是否“将config/initializers/devise.rb修改为:”

代码语言:javascript
运行
复制
config.authentication_keys = [ :username ]
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17411838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档