我的用户模型正在使用has_secure_password
(基于Rails 教程书):
架构.rb:
create_table "users", :force => true do |t|
t.string "password_digest"
end
用户.rb:
class User < ActiveRecord::Base
attr_accessible :name, :email, :avatar, :password, :password_confirmation, :provider, :uid
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
我有这个编辑视图:
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirm Password" %>
<%= f.password_field :password_confirmation %>
<%= f.label :avatar %>
<%= f.file_field :avatar %>
现在的问题是用户每次想要更新其他字段时都必须填写password
and字段。password_confirmation
所以我在考虑分割表格:
用户/edit.html.erb:
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :avatar %>
<%= f.file_field :avatar %>
用户/编辑密码:
(I will add a current_password field later here).
<%= f.label :password, "New Password" %>
<%= f.password_field :password, %>
<%= f.label :password_confirmation, "Confirm Password", "Retype Password" %>
<%= f.password_field :password_confirmation %>
我在考虑两种选择:
- 在每个视图中都有所有用户字段,但是制作这些字段我不希望用户看到隐藏字段(问题是由于某种原因我无法检索密码。类似
@user.password
返回的东西nil
。我只能这样@user.password_digest
做不会验证该字段)。 - 添加
:unless
和验证(但我不知道如何做到这一点,以便它只适用于password
视图)。password_confirmation
users/edit
这里最好的解决方案是什么?