gpt4 book ai didi

ruby-on-rails - AASM 由 current_user 保护

转载 作者:行者123 更新时间:2023-12-02 04:41:04 25 4
gpt4 key购买 nike

是否可以使用 AASM 设置防护来按用户角色控制事件访问?

这似乎是一个相当常见的用例,但我找不到一个公认的答案。许多人似乎建议将权限逻辑保留在 Controller 中,这当然有效,但意味着将状态机逻辑注入(inject)到几个 Controller 中。出于多种原因,这很糟糕,但最关键的是,对 SM 的任何更新都需要找到所有用法以与模型一起修改。

我提出的解决方案有效,但我很好奇是否有人找到了更好的解决方案。

我的解决方案:

在我的 AASM 类(class)中,我包括了;

aasm do

before_all_events set_user

event :sample_event, :guard => :user_can? do
transition ...
end

end



private
def set_user user
@user = user
@user ||= User.new
end

def user_can?
@user.some_check_on_attributes?
end

这又允许我在我的 Controller 中执行以下操作:

aasm_class.sample_event current_user

检查当前用户,或者交替检查;

aasm_class.sample_event

检查默认用户。

这是解决此问题的最佳方法吗?大家有更好的建议吗?

最佳答案

我使用sentient_user gem 确实破坏了 MVC,但允许您从模型访问 User.current

关于ruby-on-rails - AASM 由 current_user 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com