gpt4 book ai didi

ruby-on-rails - Ruby on Rails - 字段设置为 Nil

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:56 25 4
gpt4 key购买 nike

为我的 Ruby on Rails 应用程序制作一个简单的自定义身份验证部分。我试图在用户注册应用程序时要求使用电子邮件,但是当我尝试注册过程时,会在数据库中创建一条记录,但电子邮件设置为零。这是一些代码:

我的模型:

class User < ActiveRecord::Base  
attr_accessor :email, :password, :password_confirmation
before_save :encrypt

validates :password,
:presence => true,
:confirmation => true
validates :email,
:presence => true,
:uniqueness => true,
:format => { :with => /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\z$/ }

def encrypt
if password.present?
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end

def self.authenticate(email, password)
user = find_by_email(email)
if user && user.password_hash = BCrypt::Engine.hash_secret(password, user.password_salt)
user
else
nil
end
end
end

我的 Controller :

class UsersController < ApplicationController
skip_filter :login_required, :only => [:create, :new]

def new
@user = User.new
render :layout => 'unauthenticated'
end

def create
@user = User.new(params[:user])
@user.last_login = DateTime.now
@user.is_active = true

if @user.save
session[:user_id] = @user.id

redirect_to root_url
else
render :action => :new
end
end

end

View :

<div id="register">
<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="error">
<ul>
<% for message in @user.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<ul>
<li>
<%= f.label :email %>
<%= f.text_field :email %>
</li>
<li>
<%= f.label :password %>
<%= f.password_field :password %>
</li>
<li>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</li>
<li>
<%= f.submit 'Register' %>
</li>
</ul>
<% end %>
</div>

无论出于何种原因,每次用户注册时电子邮件都会设置为 nil。唯一看起来像处理电子邮件的是 View 上的字段和验证,所以我不知道验证是否正在剥离它并且没有抛出任何错误。

:login_required 方法位于我的 application_controller 中,用于检查以确保用户已登录 session 。 skip_filter 在登录和注册页面时不检查。

有什么想法吗?提前致谢。

最佳答案

你写了:

attr_accessor :email, :password, :password_confirmation

您是否尝试过从此列表中删除电子邮件参数?它可能覆盖了 AR 对电子邮件属性的持久性。对于电子邮件,您可能需要 attr_accessible

关于ruby-on-rails - Ruby on Rails - 字段设置为 Nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com