オブジェクトの bool を変更するメソッドをコントローラーで呼び出そうとしています。基本的に、ユーザーが「確認」をクリックすると、次のように呼び出されます。verify_business_path(b)
URL users/id/dashboard にいます。ログによると、正しい ID を渡し、URL business/id/verify を呼び出します。これらの両方の URL の ID は異なります。次に、verify メソッドが呼び出されます。
def verify
@business = Business.find(params[:id])
if current_user.admin?
@business.update_attribute(:verified, true)
if @business.save
redirect_to dashboard_user_path(current_user.id)
else
redirect_to destroy_user_session
end
end
# save, render, etc
end
これが取得する ID が間違っています。ログで確認できるように、ビジネス ID ではなくユーザー ID を取得します。
Started GET "/businesses/30/verify" for 127.0.0.1 at 2013-07-10 15:22:20 +0100
Processing by BusinessesController#verify as HTML
Parameters: {"id"=>"30"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 13 LIMIT 1
Redirected to http://localhost:3000/users/13/dashboard
Filter chain halted as :check_if_admin rendered or redirected
Completed 302 Found in 4ms (ActiveRecord: 0.6ms)
ユーザー ID ではなくビジネス ID を使用するように検証メソッドを取得するにはどうすればよいですか?
ありがとう
編集:
ログを見ると、3 行目で正しいパラメーター (ビジネス ID) が渡されていますが、4 行目では間違ったパラメーター (現在のユーザー ID) でクエリが実行されていることがわかります。