Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Rails 4设计名字,姓氏不属于DB_Mysql_Ruby On Rails_Devise_Ruby On Rails 4 - Fatal编程技术网

Mysql Rails 4设计名字,姓氏不属于DB

Mysql Rails 4设计名字,姓氏不属于DB,mysql,ruby-on-rails,devise,ruby-on-rails-4,Mysql,Ruby On Rails,Devise,Ruby On Rails 4,我在rails 4应用程序上设置了一个装置。我遵循本教程并添加了用户名值。我还想要名字和姓氏,所以我认为这和教程很接近。我遵循了一些部分,跳过了验证部分,并更新了视图。这有点奏效。当注册字段时显示,当您填写时,这些字段通过所有检查,但不会输入到数据库中。它只是显示为空的名字和姓氏,但用户名实际上是工作的。以下是我所做的步骤 我遵循了整个教程(除了关于gmail和me.com的最后一部分) 我添加了名和姓字段: 我执行命令 rails generate migration add_firstnam

我在rails 4应用程序上设置了一个装置。我遵循本教程并添加了用户名值。我还想要名字和姓氏,所以我认为这和教程很接近。我遵循了一些部分,跳过了验证部分,并更新了视图。这有点奏效。当注册字段时显示,当您填写时,这些字段通过所有检查,但不会输入到数据库中。它只是显示为空的名字和姓氏,但用户名实际上是工作的。以下是我所做的步骤

  • 我遵循了整个教程(除了关于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
    
    然后做了
    rakedb:migrate
    。然后我将这些字段添加到应用程序控制器以允许这些字段。这是我的完整
    应用程序\u 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
    
    然后,我更新了我的视图,并将
    添加到注册新视图和注册编辑视图中


    提交表单时,这些字段将显示且没有错误。他们只是不更新数据库。我通过PHPMyAdmin在MYSQL数据库中手动添加了该名称,然后转到编辑页面,它正确地获取了该名称。如果你能帮忙,那就太好了。谢谢!:)

    尝试将其从attr\u访问器中删除,因为attr\u访问器的工作方式类似于实例变量

    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