ruby-on-rails - Rails 设计用户存在于空数据库中

标签 ruby-on-rails devise rake

我正在尝试通过 Devise 创建一个用户,但遇到了问题。
home#land

def land
  @resource = User.new
  @devise_mapping = Devise.mappings[:user]
end
land.html.haml
= form_for @resource, :as => :user, :url => registration_path(:user), :remote => true do
  = label_tag 'user[email]', raw("<h3>Stay Informed!</h3>")
  = text_field_tag 'user[email]', nil, {:placeholder => "Your email", :required => true}
  %input(type="submit" name="commit" value="Add")
user.rb
class User < ActiveRecord::Base
  before_validation(:on => :create) do
    self.password = "none"
    self.password_confirmation = "none"
  end
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
end

正在使用默认设计::RegistrationsController。

这出现在提交时:
development.log
Started POST "/users" for 127.0.0.1 at 2013-04-24 20:49:46 -0300
Processing by Devise::RegistrationsController#create as JS
  Parameters: {"utf8"=>"✓", "user"=>{"email"=>"me@mjohnst.com"}, "commit"=>"Add"}
  [1m[35m (0.3ms)[0m  BEGIN
  [1m[36mUser Exists (0.5ms)[0m  [1mSELECT 1 AS one FROM "users" WHERE "users"."email" = 'me@mjohnst.com' LIMIT 1[0m
  [1m[35m (0.2ms)[0m  ROLLBACK
  Rendered devise/registrations/create.js (0.4ms)
Completed 200 OK in 84ms (Views: 4.1ms | ActiveRecord: 1.0ms)

然而,在 rails console :
2.0.0p0 :011 > User.all
  User Load (0.5ms)  SELECT "users".* FROM "users"
 => #<ActiveRecord::Relation []> 

localhost:5000/users完全是空的……

当我的数据库中没有用户时,为什么会出现 User Exists 和 ROLLBACK?

最佳答案

用户存在查询来自验证器,用于检查是否没有用户使用与您尝试注册的电子邮件相同的电子邮件。永远不会有 INSERT 查询,因此您的用户永远不会被注册。

这可能是验证失败。在这种情况下,您的密码可能太短(默认设计密码长度验证要求长度至少为 8,您的只有 4)。

您收到了一个成功的 200 响应,因为它正在重定向回注册并显示一条说明验证失败的闪存消息。

关于ruby-on-rails - Rails 设计用户存在于空数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16204286/

相关文章:

ruby-on-rails - 如何正确注册和访问 OAuth2 的 Office 365 Graph API(使用来自 Ruby 的 omniauth)?

ruby-on-rails - Rails RoutingError(未初始化常量

ruby-on-rails - 使用 cancan 和 devise 授权 Rails 中未登录的用户行为

ruby-on-rails - Rails 是否 rake db :migrate needs a javascript runtime?

ruby-on-rails-3 - 与 Rails 3 中的 rake 错误混淆

ruby - Cronjob 不适用于 rake 命令

ruby-on-rails - 无法在包含 check_box_tag 字段的表单中获取 Update_all 在 Rails 4 中完全工作

ruby-on-rails - Rails - 在 .create 上传递额外的变量

ruby-on-rails - ActiveModel::Serializer 可以像 Rails Controller 那样具有命名空间名称(嵌套)吗?

ruby-on-rails - Rails3 和 Devise 作为基本 CRM 的一部分