ユーザーが自分のプロファイル(文字列)を編集できるように、 User モデルの edit_profile という新しいページを作成しようとしています。私はhttp://railscasts.com/episodes/41-conditional-validationsに従っています
フォームは次のとおりです (edit_profile.html.erb):
<%= form_for @user, :html => { :multipart => true } do |f| %>
<div class="field">
<%= f.label :profile %><br/>
<%= f.text_area :profile, :class => "round" %><br />
</div>
<div class="actions">
<%= submit_tag "update", :id => "updateSubmit" %>
</div>
<% end %>
私が抱えている問題は、パスワードの存在とパスワードの確認の検証があることです。edit_profile ビューをロードPassword is too short (minimum is 6 characters)
すると、新しいプロファイルを送信しようとする前でも、このメッセージが表示され続けます。
ここに私の users_controller.rb があります:
def edit_profile
@user = current_user
@user.updating_password = false
@user.save
@title = "Edit profile"
end
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:success] = "Account updated."
redirect_to @user
else
@title = "Edit user"
render 'edit'
end
end
ユーザー モデルで自分のプロファイル属性を編集したいだけの場合、パスワードの検証をバイパスするにはどうすればよいですか?
ありがとう!
その他の関連情報:
user.rb
class User < ActiveRecord::Base
attr_accessor :password, :updating_password
attr_accessible :name, :email, :password, :password_confirmation, :photo,
:profile
before_save :downcase_fields
before_save :encrypt_password
validates_presence_of :password, :if => :should_validate_password?
validates_confirmation_of :password, :if => :should_validate_password?
def should_validate_password?
updating_password || new_record?
end
validates :name, :presence => true,
:name_format => true,
:uniqueness => { :case_sensitive => false }
validates :email, :presence => true,
:email_format => true,
:uniqueness => { :case_sensitive => false }
validates :password,
#:presence => true,
#:confirmation => true,
:length => { :within => 6..40 }
validates :profile, :length => { :maximum => 160 }
end