ruby-on-rails-3.2 – 访问Pundit策略中的会话参数
发布时间:2020-12-17 04:20:54 所属栏目:百科 来源:网络整理
导读:看来Pundit策略不访问会话参数.由于构造不会将会话重新组合为有效的变量或方法.有没有办法访问会话或其他参数? class MyModelPolicy def create? @contructs = Construct.where(['id = ?',session[:construct_id]]).all endend 解决方法 我是Pundit的贡献者
看来Pundit策略不访问会话参数.由于构造不会将会话重新组合为有效的变量或方法.有没有办法访问会话或其他参数?
class MyModelPolicy def create? @contructs = Construct.where(['id = ?',session[:construct_id]]).all end end 解决方法
我是Pundit的贡献者.默认情况下,策略只能访问当前用户和您正在检查权限的记录.
您可以使用context pattern defined in the Pundit docs.首先在app / model目录中创建一个用户上下文类,接受您需要的所有上下文参数,在本例中为session. class UserContext attr_reader :user,:session def initialize(user,session) @user = user @session = session end end 然后,您可以使用UserContext类的实例覆盖pundit使用的用户记录. class ApplicationController include Pundit def pundit_user UserContext.new(current_user,session) end end 通过使您的应用程序策略接受上下文来完成.如果您希望遵守旧策略,请将这些方法委派给上下文. class ApplicationPolicy attr_reader :context,:user,:session def initialize(context,record) @context = context @record = record end delegate :user,to: :context delegate :session,to: :context ... end 现在,您可以访问策略中的会话. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Pull(XmlPullParser)解析Xml文件
- c# – 物理数据类型
- ruby-on-rails – 在rails中迁移db的分段错误ruby 1.8.7
- c# – Azure函数在外部库中使用TraceWriter进行日志记录
- 【第2章第255回】这20个正则表达式,让你少写1,000行代码
- C#使用Socket上传并保存图片的方法
- ruby-on-rails – 如何确定github合并请求是否/何时作为gem
- oracle: datafile的resize问题
- C#递归遍历窗体所有textbox控件并设置textbox事件的方法
- ruby-on-rails – 如何在Rails资产管道中确定给定资产的MD5