为什么我的密码总是零?

时间:2013-09-06 10:43:08

标签: ruby-on-rails ruby

我正在尝试在Ruby on Rails中创建一个注册表单。

我的表单当前表单如下所示:

<%= form_for @util, :remote => true do |f| %>
 <div class="register-form">
    <div class=form-name>
       <span>Name </span>
       <span><%= f.text_field :name %></span>
    </div>
    <div class=form-surname>
        <span>Surname </span>
        <span><%= f.text_field :surname %></span>
    </div>
    <div class=form-email>
         <span>E-mail </span>
        <span><%= f.text_field :email %></span>
    </div>
    <div class=form-password>
        <span>Password </span>
        <span><%= f.text_field :password %></span>
    </div>
    <div class="submit">
          <%= f.submit "Register" %>
    </div>
  </div>
<% end %>

我创建它的控制器如下所示:

def create
  @user = User.new(params[:util])
  @user.password = encrypt_password(@user.password)

  if @user.save!
    respond_to do |format|
      format.json { render :partial => "partials/form.html.erb", :task => @task }
    end
  end 
end

当我在调试期间检查变量时,我可以看到@user.password为零,但如果我手动将其检查为@user.password,它会给我输入的内容。 当我尝试将新用户保存在数据库中时,它总是有一个零密码。

即使params和encrypt是正确的,任何关于为什么密码总是为零的消息?


编辑:

感谢您对代码和密码安全字段问题的帮助。我已经忘记了这件事,在回复​​之后看了一下模特后我注意到了一些事情:

class User < ActiveRecord::Base
 attr_accessible :email, :name, :password, :surname
 has_and_belongs_to_many :projects

 attr_accessor :password

删除attr_accessor后,我设法获取密码并保存在数据库中而没有问题。

1 个答案:

答案 0 :(得分:0)

请更改:

<%= f.text_field :password %>

要:

 <%=f.password_field :password%>

此外:

@user.password = encrypt_password(@user.password)` 

应该是这样的:

@user.password = encrypt_password(params[:util][:password])