サブスクライバーモデルでdeviseを使用するRails 3アプリケーションがあります。加入者に best_in_place gem を使用してアカウント情報をその場で更新してもらいたいのですが、データベースを更新することができないようです。画面は更新されますが、データベースは更新されません。
このエラーは、既存のサブスクライバーが悪いことを示唆しているように見えますが、サブスクライバーが存在しない場合、そのサブスクライバーを更新することは不可能であるため、そうではありません。
私がやりたいことは、ユーザーが自分の詳細を表示するsubscriber/accounts#showページからその場で自分の情報を更新できるようにすることだけです.
私のサブスクライバー/アカウントコントローラーにはこれがあります:
def update
@subscriber = Subscriber.find(current_subscriber.id)
@subscriber.update_without_password(params[:subscriber])
end
サーバーログには常に次の結果が表示されます。
Processing by Subscribers::AccountsController#update as JSON
Parameters: {"subscriber"=>{"firstname"=>"Aarof"}, "authenticity_token"=>"Sx6kEQy4NC56ovikMs/D9nVPGJt1q5jNCoFnNjFhDu8=", "id"=>"2"}
Subscriber Load (1.9ms) SELECT `subscribers`.* FROM `subscribers` WHERE `subscribers`.`id` = 2 LIMIT 1
CACHE (0.0ms) SELECT `subscribers`.* FROM `subscribers` WHERE `subscribers`.`id` = 2 LIMIT 1
(0.2ms) BEGIN
Subscriber Exists (0.4ms) SELECT 1 AS one FROM `subscribers` WHERE (`subscribers`.`email` = BINARY 'frostsquid@yahoo.com' AND `subscribers`.`id` != 2) LIMIT 1
(0.1ms) ROLLBACK
Redirected to http://localhost:3000/subscribers/accounts/2
Completed 302 Found in 12ms (ActiveRecord: 2.6ms)
私のショーページは次のようになります。
%p.subscriber-account-info
=best_in_place @subscriber, :firstname, :path => subscribers_account_path(@subscriber)
サブスクライバーのルートは次のようになります。
subscribers_accounts GET /subscribers/accounts(.:format) subscribers/accounts#index
POST /subscribers/accounts(.:format) subscribers/accounts#create
new_subscribers_account GET /subscribers/accounts/new(.:format) subscribers/accounts#new
edit_subscribers_account GET /subscribers/accounts/:id/edit(.:format) subscribers/accounts#edit
subscribers_account GET /subscribers/accounts/:id(.:format) subscribers/accounts#show
PUT /subscribers/accounts/:id(.:format) subscribers/accounts#update
コンソールを使用してサブスクライバーのファーストネームを更新しようとしているのを確認したところ、サブスクライバーが存在するという同じメッセージを受け取り、トランザクションがロールバックされました。これはDeviseの何かが原因ですか?