如何让第一个注册用户成为Rails应用程序的管理员?

时间:2018-05-10 13:32:07

标签: ruby-on-rails

我有一个用户模型,我的应用程序在Rails 5上,我尝试进行自定义回调,允许您将admin的角色分配给第一个注册用户,但不幸的是,在将数据保存到数据库时,角色没有分配......请告诉我,有什么不对?

数据库

t.boolean "admin", default: false

模型

class User < ApplicationRecord
  before_save: update_admin
  
private
  def update_admin
    User.count(1).update_attributes (admin: 'true')
   end
end

1 个答案:

答案 0 :(得分:2)

你想要一个{em}设置 before_createadmin的{​​{1}}回调(但不能保存!它会再次触发true回调所以on =&gt;堆栈级别太深了。)

您可以执行以下操作:

before_save

或替代版本,带有before_create :set_admin private def set_admin self.admin = true unless User.exists? # faster than a count end 回调:

after_save

这两种解决方案的缺点是,每次创建用户时,这些回调都会触发SQL计数。