我的用户模型正在使用has_secure_password
(基于Rails tutorial Book):
schema.rb:
create_table "users", :force => true do |t|
t.string "password_digest"
end
user.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
和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 %>
用户/ edit_password:
(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
视图)。< / LI>
醇>
这里最好的解决方案是什么?
答案 0 :(得分:1)
您无法获取用户密码,因为数据库不存储它(它存储单向加密密码摘要)。所以第二种选择是正确的。
看看设计实施(validation和controller),它可以提供帮助。
答案 1 :(得分:0)
您可以使用object.save跳过验证:validate =&gt; false