我几乎每张表都有一个 group_id,搜索的时候控制器里会根据当前用户找到 group_id,然后根据 group_id 去搜索数据,现在我是每个 action 都调用 Model.where(group_id: XXX) 的方式去用的,感觉不大优雅,有没有办法更优雅一点。 我考虑过用 scope,但是感觉还是要传进去 group_id,有没有办法在 model 层获取 controller 的方法例如 current_group_id,这样子就可以很优雅了
Rails 5 有一个 ActiveSupport::CurrentAttributes 对象,应该符合你的需求,但是这样做会有点奇怪,group_id 并没有具体说明是那个 model。
ActiveSupport::CurrentAttributes
你这问题是不是用 controller concern 也能解决,每个 controller 设置对应的 group。
谢谢你的回答,我去看了下好像就是我想要的。在 controller 我已经用可以获得全局的 current_group_id 了,但是每次插入或者查询数据的时候模型都要传一遍 group,感觉有点罗索
可以看看 https://github.com/ErwinM/acts_as_tenant