新手问题 activerecord 有没有办法加入默认查询条件

selenium · 2019年04月15日 · 最后由 huobazi 回复于 2019年04月15日 · 924 次阅读

我几乎每张表都有一个 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。

你这问题是不是用 controller concern 也能解决,每个 controller 设置对应的 group。

gzhi1992 回复

谢谢你的回答,我去看了下好像就是我想要的。在 controller 我已经用可以获得全局的 current_group_id 了,但是每次插入或者查询数据的时候模型都要传一遍 group,感觉有点罗索

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