我正在尝试在Rails 4中创建一个应用程序。我使用设计和omniauth。
我正在尝试按照本教程。 http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/
我必须对设置进行一些更改才能使其正常运行,因为我希望某些用户在注册时批准用户。
我正在尝试了解此过程的设计文档。
特别是:
文档会发出一个警告:添加:批准强选参数 - 警告:在强参数中添加'approved'作为白名单参数可以允许任何用户通过在注册表单中添加输入标记来批准自己。采取行动进行管理。
我已列出:在我的强力参数中批准如下:
def user_params
accessible = [ :first_name, :last_name, :email ] # extend with your own params
accessible << [ :password, :password_confirmation ] unless params[:user][:password].blank?
accessible << [:approved] if user.admin
params.require(:user).permit(accessible)
end
只有作为管理员的用户才能访问此属性。这是警告所暗示的那种行为吗?如果没有,你如何保护这个?
当我尝试运行服务器时,我收到一条消息说出错了。 heroku日志说:
NoMethodError (undefined method `approved?' for #<User:0x007f498741c210>):
2015-12-12T00:20:22.048675+00:00 app[web.1]: app/models/user.rb:130:in `active_for_authentication?'
我尝试添加名为'approved'的方法:
def approved
self.approved = true
end
我的用户模型中仍然有这个:
def active_for_authentication?
super && approved?
end
但我仍然得到同样的错误。我不明白出了什么问题。