Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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_Devise_Registration - Fatal编程技术网

Ruby on rails 设计::无法在自定义字段中注册以注册表单

Ruby on rails 设计::无法在自定义字段中注册以注册表单,ruby-on-rails,devise,registration,Ruby On Rails,Devise,Registration,我正在构建一个Rails应用程序,在向Desive(和ActiveAdmin)注册用户时遇到了一些问题。 在最初的注册表单中,我添加了一个自定义用户名字段,这个字段给我带来了麻烦:有时用户可以注册,而另一次用户不能注册(用户名允许参数出现验证错误,而我在控制器中指定了我允许它) 这是我的用户模型: class User < ActiveRecord::Base validates :username, presence: true, un

我正在构建一个Rails应用程序,在Desive(和ActiveAdmin)注册用户时遇到了一些问题。
在最初的注册表单中,我添加了一个自定义用户名字段,这个字段给我带来了麻烦:有时用户可以注册,而另一次用户不能注册(用户名允许参数出现验证错误,而我在控制器中指定了我允许它)

这是我的用户模型

class User < ActiveRecord::Base
  validates :username,
            presence: true,
            uniqueness: {
              case_sensitive: false,
              scope: :provider
            },
            if: proc { |u| u.new_record? || u.changed? }

  # other stuff here
end
这是我的开发日志,当它工作时可以注册

13:23:23 web.1         | [INFO ] POST    "/admin"  for 127.0.0.1  at 2016-05-14 13:23:23 +0200
13:23:23 web.1         | [DEBUG]   Setting Load (0.4ms)  SELECT  `settings`.* FROM `settings`  ORDER BY `settings`.`id` ASC LIMIT 1
13:23:23 web.1         | [DEBUG]   Setting::Translation Load (0.3ms)  SELECT `setting_translations`.* FROM `setting_translations` WHERE `setting_translations`.`setting_id` = 1
13:23:23 web.1         | [DEBUG]   Category Load (0.3ms)  SELECT  `categories`.* FROM `categories` WHERE `categories`.`name` = 'LegalNotice' LIMIT 1
13:23:23 web.1         | [DEBUG]   Menu Load (0.3ms)  SELECT `menus`.* FROM `menus` WHERE `menus`.`id` IN (8)
13:23:23 web.1         | [DEBUG]   Menu::Translation Load (0.4ms)  SELECT `menu_translations`.* FROM `menu_translations` WHERE `menu_translations`.`menu_id` IN (8)
13:23:23 web.1         | [DEBUG]   Category Load (0.3ms)  SELECT  `categories`.* FROM `categories` WHERE `categories`.`name` = 'Registration' LIMIT 1
13:23:23 web.1         | [DEBUG]   OptionalModule Load (0.4ms)  SELECT  `optional_modules`.* FROM `optional_modules`  ORDER BY `optional_modules`.`id` ASC LIMIT 1000
13:23:23 web.1         | [DEBUG]   AdultSetting Load (0.3ms)  SELECT  `adult_settings`.* FROM `adult_settings`  ORDER BY `adult_settings`.`id` ASC LIMIT 1
13:23:23 web.1         | [DEBUG]   Slider Load (0.4ms)  SELECT  `sliders`.* FROM `sliders` INNER JOIN `categories` ON `categories`.`id` = `sliders`.`category_id` WHERE `sliders`.`online` = 1 AND (categories.name = 'Registration')  ORDER BY `sliders`.`id` ASC LIMIT 1
13:23:24 web.1         | [DEBUG]   VideoSetting Load (0.7ms)  SELECT  `video_settings`.* FROM `video_settings`  ORDER BY `video_settings`.`id` ASC LIMIT 1
13:23:24 web.1         | [DEBUG]    (0.2ms)  BEGIN
13:23:24 web.1         | [DEBUG]   User Exists (0.5ms)  SELECT  1 AS one FROM `users` WHERE (`users`.`id` IS NOT NULL) AND `users`.`slug` = 'demo18' LIMIT 1
13:23:24 web.1         | [DEBUG]   User Exists (0.4ms)  SELECT  1 AS one FROM `users` WHERE `users`.`email` = BINARY 'demo18@demo.fr' LIMIT 1
13:23:24 web.1         | [DEBUG]   User Exists (11.0ms)  SELECT  1 AS one FROM `users` WHERE (`users`.`username` = 'demo18' AND `users`.`provider` IS NULL) LIMIT 1
13:23:24 web.1         | [DEBUG]   User Exists (0.3ms)  SELECT  1 AS one FROM `users` WHERE (`users`.`email` = 'demo18@demo.fr' AND `users`.`provider` IS NULL) LIMIT 1
13:23:24 web.1         | [DEBUG]   SQL (4.3ms)  INSERT INTO `users` (`email`, `encrypted_password`, `username`, `slug`, `created_at`, `updated_at`) VALUES ('demo18@demo.fr', '$2a$10$XzsU01QgfNjK0N.432l5/.UKiSISQ0IhY/kfrQzDrIT476HFnCwVe', 'demo18', 'demo18', '2016-05-14 13:23:24', '2016-05-14 13:23:24')
13:23:24 web.1         | [DEBUG]    (0.5ms)  COMMIT
13:23:24 web.1         | [INFO ] method=POST path=/admin format=html controller=active_admin/devise/registrations action=create status=302 duration=257.00 view=0.00 db=21.08 location=http://rails-starter.dev:3000/admin
我的项目

class User < ActiveRecord::Base
  validates :username,
            presence: true,
            uniqueness: {
              case_sensitive: false,
              scope: :provider
            },
            if: proc { |u| u.new_record? || u.changed? }

  # other stuff here
end
  • 轨道4.2.6
  • ActiveAdmin 1.0.0.pre2
  • 设计3.5.9
  • Ruby 2.3.0
  • Mac OSX 10.11(用于开发)

您是否打算创建一个用户可以将多个OAuth身份验证绑定到单个帐户的系统?我猜是这样的,因为你有一个提供者和用户名列。在这种情况下,您需要使用一个单独的模型(和db表)来存储身份验证详细信息。在我的项目中,Oauth身份验证不允许用户注册,而只允许将现有的Desive帐户链接到提供商。我的问题只是当我试图注册一个经典的Desive帐户时。谢谢
提供程序
列是否有默认设置?否则,当provider字段为空时,您将遇到问题。我不认为问题来自provider列,因为它有时会起作用。默认情况下,provider为NULL,但这不是问题,因为我没有为此列设置验证规则。我猜“configure_allowed_parameters”方法没有被调用(我没有看到我放入的logger.debug和测试中断),但我不知道为什么。我试图将before_操作直接移动到ApplicationController(我使用了一个问题)同样的事情也发生了:在我只修改一段代码,然后再次中断,直到我杀死所有ruby进程之前,它工作得非常好。非常奇怪……您是否打算创建一个系统,用户可以将多个OAuth身份验证绑定到单个帐户?我猜是这样的,因为你有一个提供者和用户名列。在这种情况下,您需要使用一个单独的模型(和db表)来存储身份验证详细信息。在我的项目中,Oauth身份验证不允许用户注册,而只允许将现有的Desive帐户链接到提供商。我的问题只是当我试图注册一个经典的Desive帐户时。谢谢
提供程序
列是否有默认设置?否则,当provider字段为空时,您将遇到问题。我不认为问题来自provider列,因为它有时会起作用。默认情况下,provider为NULL,但这不是问题,因为我没有为此列设置验证规则。我猜“configure_allowed_parameters”方法没有被调用(我没有看到我放入的logger.debug和测试中断),但我不知道为什么。我试图将before_操作直接移动到ApplicationController(我使用了一个问题)同样的事情也发生了:在我只修改一段代码,然后再次中断,直到我杀死所有ruby进程之前,它工作得非常好。很奇怪。。。
13:23:23 web.1         | [INFO ] POST    "/admin"  for 127.0.0.1  at 2016-05-14 13:23:23 +0200
13:23:23 web.1         | [DEBUG]   Setting Load (0.4ms)  SELECT  `settings`.* FROM `settings`  ORDER BY `settings`.`id` ASC LIMIT 1
13:23:23 web.1         | [DEBUG]   Setting::Translation Load (0.3ms)  SELECT `setting_translations`.* FROM `setting_translations` WHERE `setting_translations`.`setting_id` = 1
13:23:23 web.1         | [DEBUG]   Category Load (0.3ms)  SELECT  `categories`.* FROM `categories` WHERE `categories`.`name` = 'LegalNotice' LIMIT 1
13:23:23 web.1         | [DEBUG]   Menu Load (0.3ms)  SELECT `menus`.* FROM `menus` WHERE `menus`.`id` IN (8)
13:23:23 web.1         | [DEBUG]   Menu::Translation Load (0.4ms)  SELECT `menu_translations`.* FROM `menu_translations` WHERE `menu_translations`.`menu_id` IN (8)
13:23:23 web.1         | [DEBUG]   Category Load (0.3ms)  SELECT  `categories`.* FROM `categories` WHERE `categories`.`name` = 'Registration' LIMIT 1
13:23:23 web.1         | [DEBUG]   OptionalModule Load (0.4ms)  SELECT  `optional_modules`.* FROM `optional_modules`  ORDER BY `optional_modules`.`id` ASC LIMIT 1000
13:23:23 web.1         | [DEBUG]   AdultSetting Load (0.3ms)  SELECT  `adult_settings`.* FROM `adult_settings`  ORDER BY `adult_settings`.`id` ASC LIMIT 1
13:23:23 web.1         | [DEBUG]   Slider Load (0.4ms)  SELECT  `sliders`.* FROM `sliders` INNER JOIN `categories` ON `categories`.`id` = `sliders`.`category_id` WHERE `sliders`.`online` = 1 AND (categories.name = 'Registration')  ORDER BY `sliders`.`id` ASC LIMIT 1
13:23:24 web.1         | [DEBUG]   VideoSetting Load (0.7ms)  SELECT  `video_settings`.* FROM `video_settings`  ORDER BY `video_settings`.`id` ASC LIMIT 1
13:23:24 web.1         | [DEBUG]    (0.2ms)  BEGIN
13:23:24 web.1         | [DEBUG]   User Exists (0.5ms)  SELECT  1 AS one FROM `users` WHERE (`users`.`id` IS NOT NULL) AND `users`.`slug` = 'demo18' LIMIT 1
13:23:24 web.1         | [DEBUG]   User Exists (0.4ms)  SELECT  1 AS one FROM `users` WHERE `users`.`email` = BINARY 'demo18@demo.fr' LIMIT 1
13:23:24 web.1         | [DEBUG]   User Exists (11.0ms)  SELECT  1 AS one FROM `users` WHERE (`users`.`username` = 'demo18' AND `users`.`provider` IS NULL) LIMIT 1
13:23:24 web.1         | [DEBUG]   User Exists (0.3ms)  SELECT  1 AS one FROM `users` WHERE (`users`.`email` = 'demo18@demo.fr' AND `users`.`provider` IS NULL) LIMIT 1
13:23:24 web.1         | [DEBUG]   SQL (4.3ms)  INSERT INTO `users` (`email`, `encrypted_password`, `username`, `slug`, `created_at`, `updated_at`) VALUES ('demo18@demo.fr', '$2a$10$XzsU01QgfNjK0N.432l5/.UKiSISQ0IhY/kfrQzDrIT476HFnCwVe', 'demo18', 'demo18', '2016-05-14 13:23:24', '2016-05-14 13:23:24')
13:23:24 web.1         | [DEBUG]    (0.5ms)  COMMIT
13:23:24 web.1         | [INFO ] method=POST path=/admin format=html controller=active_admin/devise/registrations action=create status=302 duration=257.00 view=0.00 db=21.08 location=http://rails-starter.dev:3000/admin