数据库
首页 > 数据库> > mysql-Rails 4设计名字,姓氏不去数据库

mysql-Rails 4设计名字,姓氏不去数据库

作者:互联网

我在Rails 4应用程序上设置了一个装置.我遵循了本教程https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address,并添加了用户名值.我还想要名字和姓氏,所以我认为它与本教程很接近.我遵循了部分内容,并跳过了身份验证部分,并更新了视图.这有点奏效.注册时显示的字段以及您填写的字段均通过所有检查,但未在数据库中输入.它仅显示名字和姓氏为NULL,但用户名实际上正在工作.这是我所做的步骤.

>我遵循了整个教程(关于gmail和me.com的最后一部分除外).
>我添加了名字和姓氏字段:

我运行了命令

rails generate migration add_firstname_to_users first_name:string:uniq
rails generate migration add_lastname_to_users last_name:string:uniq

然后做了db:migrate.然后,我将字段添加到应用程序控制器以允许这些字段.这是我的完整application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_filter :configure_permitted_parameters, if: :devise_controller?
  protected
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :username, :email, :password, :password_confirmation, :remember_me) }
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :last_name, :username, :email, :password, :password_confirmation, :current_password) }
  end
end

然后,我在attr_accessor中添加了名字和姓氏.这是我完整的user.rb模型.

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  attr_accessor :login, :first_name, :last_name

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:login]

  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

然后,我更新了视图并添加了<%= f.text_field:first_name%>和<%= f.text_field:last_name%>新建注册和注册编辑视图.

提交表单时,这些字段显示出来并且没有错误.他们只是不更新​​数据库.我通过PHPMyAdmin在MYSQL数据库中手动添加了名称,然后转到编辑页面,它可以正确获取它.如果您能提供帮助,那就太好了.谢谢!

标签:devise,ruby-on-rails-4,ruby-on-rails,mysql
来源: https://codeday.me/bug/20191122/2057123.html