Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Ruby on rails 用户的电子邮件参数未保留到数据库中_Ruby On Rails_Email_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 用户的电子邮件参数未保留到数据库中

Ruby on rails 用户的电子邮件参数未保留到数据库中,ruby-on-rails,email,ruby-on-rails-4,Ruby On Rails,Email,Ruby On Rails 4,我在rails 4.1.8应用程序中创建了一个用户模型,属性为email和password。我启动了rails控制台,user=user.newemail:user@example.com,password:示例work but user.save保存密码并省略电子邮件。下面是模型、迁移的数据库文件和rails控制台日志 用户模型 class User < ActiveRecord::Base before_save {self.email = email.downcase! }

我在rails 4.1.8应用程序中创建了一个用户模型,属性为email和password。我启动了rails控制台,user=user.newemail:user@example.com,password:示例work but user.save保存密码并省略电子邮件。下面是模型、迁移的数据库文件和rails控制台日志

用户模型

class User < ActiveRecord::Base
    before_save {self.email = email.downcase! }
    VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
    validates :email, presence: true, length: { maximum: 255 },
                         format:{with: VALID_EMAIL_REGEX}, 
                         uniqueness: { case_sensitive: false }

    has_secure_password
    validates :password, presence: true, length: { minimum: 6 }
end
用户的数据库文件

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
     t.string :email, unique: true
     t.string :password_digest

     t.timestamps null: false
   end
  end
end
RAILS控制台日志

<r.new(email: "user@example.com" , password: "example")
=> #<User id: nil, email: "user@example.com", password_digest:         "$2a$10$jxwd/oriT
z2HklHK4b4nf.P.DWb6s35YTO.EbYwup0I...", created_at: nil, updated_at: nil>
irb(main):008:0> user.save
(1.0ms)  BEGIN
User Exists (1.0ms)  SELECT  1 AS one FROM `users`  WHERE `users`.`email` =   'user@example.com' LIMIT 1
SQL (46.0ms)  INSERT INTO `users` (`created_at`, `password_digest`,  `updated_at`) VALUES ('2015-07-20 20:54:35', '$2a$10$jxwd/oriTz2HklHK4b4nf.P.DWb6s35YTO.Eb
Ywup0I.gMTOLSNKa', '2015-07-20 20:54:35')
(89.1ms)  COMMIT
=> true
用户控制器

class UsersController < ApplicationController
  def new
  end

  private

    def user_params
      params.require(:user).permit(:email)
    end
end
查看未插入电子邮件参数的日志;非常感谢您的帮助。

在您的用户模型中尝试以下操作:

唐卡斯!编辑调用它的变量,并且不返回downcase字符串,除非有需要downcase的内容,即,如果您在全小写电子邮件中使用它,它将返回nil,并且根据您的控制台输出,这就是发生的情况。光是唐卡斯就可以了


您的users\u controller.rb中的user\u params strong params方法是什么样子的?@MarsAtomic,我添加了我的UsersController@OpyOsegs对于compelle答案来说,这还不够,但您需要将对象保存在控制器中。例如,定义create方法,并添加逻辑,如if@user.save。。。您也没有在中定义@user对象controller@HunterStevens是的,create方法和其他方法需要编写,但我正在尝试使其成为一个测试驱动的应用程序。这是在编写代码之前编写测试的好工作。只是期望任何测试都会失败,因为你没有写这些方法,它就像一个魅力;谢谢你的API页面。没问题!很高兴事情解决了!
before_save {self.email = email.downcase } # no "!"