POST" / admin / users / 26 / approve_vip"不工作

时间:2016-12-12 05:00:16

标签: ruby-on-rails

我想批准用户为vip,但是当我按下按钮时。页面刷新但没有任何改变。登录终端

Started POST "/admin/users/26/approve_vip" for ::1 at 2016-12-12 16:33:22 +0800
Processing by Admin::UsersController#approve_vip as HTML
    Parameters: {"authenticity_token"=>"qYrbaVH/cssY3VBYLw6Hd4wXl42Zz8OqkdHGGoITEeeWtbJ4ZOLOmJF/Jmpx70s9aaL5Yr0vFhqNV9kGHtILpA==", "user_id"=>"26"}
User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 4], ["LIMIT", 1]]
User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 26], ["LIMIT", 1]]
SQL (1.4ms)  UPDATE "users" SET "is_vip" = 't' WHERE "users"."id" = ?  [["id", 26]]
(0.0ms)  begin transaction
(0.0ms)  commit transaction
DEPRECATION WARNING: `redirect_to :back` is deprecated and will be removed from Rails 5.1. Please use `redirect_back(fallback_location: fallback_location)` where `fallback_location` represents the location to use if the request has no HTTP referer information. (called from approve_vip at /Users/a1/JDDstore/app/controllers/admin/users_controller.rb:26)
Redirected to http://localhost:3000/admin/users
Completed 302 Found in 6ms (ActiveRecord: 1.7ms)



Started POST "/admin/users/26/approve_vip" for ::1 at 2016-12-12 15:41:47 +0800
Processing by Admin::UsersController#approve_vip as HTML
  Parameters:   {"authenticity_token"=>"uYc9hdEZaYCgfhdmYK3XnyK2lcraPpHWfuXcQ5cRtLyGuFSU5ATV0yncYVQ+TBvVxwP7Jf7eRGZiY8NfC9Cu/w==", "user_id"=>"26"}
User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 4], ["LIMIT", 1]]
User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 26], ["LIMIT", 1]]
(0.0ms)  begin transaction
(0.0ms)  commit transaction
DEPRECATION WARNING: `redirect_to :back` is deprecated and will be removed from Rails 5.1. Please use `redirect_back(fallback_location: fallback_location)` where `fallback_location` represents the location to use if the request has no HTTP referer information. (called from approve_vip at /Users/a1/JDDstore/app/controllers/admin/users_controller.rb:26)
Redirected to http://localhost:3000/admin/users
Completed 302 Found in 4ms (ActiveRecord: 0.3ms)

控制器中的代码是

def approve_vip
    @user = User.find(params[:user_id])
    @user.is_vip=true 
    @user.save      
    redirect_to :back
end

你能告诉我为什么不改变这个角色吗? 如果您想了解更多信息,请告诉我。非常感谢你帮助我。

2 个答案:

答案 0 :(得分:0)

您需要阅读错误消息。可能用户的验证失败了。

def approv!
  update_attributes!(is_vip: true)
end

此代码为您提供错误消息的异常。

答案 1 :(得分:0)

看起来你有一些模型回调(可能是before_save)限制更新记录。

您可以使用update_columnupdate_columns来绕过回调/验证,并直接对您的数据库进行更新查询。

def approve_vip
  @user = User.find(params[:user_id])
  @user.update_columns(is_vip: true) 
  redirect_to :back
end