Rails [关闭] 请问 ruby china 在 model 是怎么处理 current_user 的?

simlegate · 2013年04月14日 · 最后由 badboy 回复于 2013年04月14日 · 3102 次阅读

结论:Model 不应该关心 current_user,需要用的话就应该传入 model,明确 MVC!

一般都放 controller 里

一般都放 controller 里。

简单回答:model 层不应该关心 current_user。

有个 trick 是放到 Thread.current 里,在 before_filter 里每次都设置下。不过大部分需要当前用户的操作都可以在 controller 里把 current_user 传给 model 用,model 应该是不需要知道当前用户的。比如 paper_trail 这个 gem 如果在 controller 中,它会使用 current_uesr 作为修改者。其它环境修改,比如在 Sidekiq worker 里,就需要自己显示指定是谁修改了。

如果是 User 的方法

current_user.do_something

如果是非 User 的方法

topic.do_something_by(current_user)

哎,偶们都是在 model 里用 current_user 的,挺好

需要 登录 后方可回复, 如果你还没有账号请 注册新账号