私は Rails3 でデバイスを使用しています。ユーザーの属性を更新する際に 1 つの問題に直面しています。これは現在のユーザーであり、ユーザーを更新しようとすると、更新されません。@user.errors を見ると、パスワードを空白にすることはできないと表示されます。私はこれについてデバイスのドキュメントを読み、 upate_without_password(params[:user]) を使用しましたが、私のために働いていません。私がMongodbを使用していることを知るためだけに。また、stackoverflow に投稿されたのと同じ質問をしましたが、うまくいきませんでした。コードを共有しましょう:
ユーザーモデルでは:次のようなパスワードの検証があります:
validates :password,
presence: true,
confirmation: true,
length: { minimum: 5, maximum: 16 }
ユーザーコントローラーで:
protect_from_forgery except: :update
def update
@user = User.find(params[:id])
if @user.update_without_password(params[:user])
sign_in(current_user, :bypass=>true)
respond_to do |format|
format.json {render :json => current_user.to_json(:only => [ :status])}
end
else
respond_to do |format|
format.json {render :json => @user.errors.to_json}
end
end
end
これは私がリクエストで送信しているパラメータです
Parameters: {"user"=>{"status"=>"verified", "_id"=>"user1"}, "id"=>"user1"}
Railsコンソールでも試しました。update_attributes を実行すると false と表示されますが、ユーザー オブジェクトを調べると、更新されたことが表示されます。
1.9.3p286 :008 > user.update_attributes({"status"=>"verified"})
=> false
私が欠けているものは何か提案はありますか?