我很难理解如何在我的Rails应用程序中定义范围/类方法。
基本上,这是我希望它做的查询:
self.visible(current_user) -> {
@requests.where.not(visible==group && (request.user.group !=
current_user.group))}
基本上,它是一个用户可以发布帖子/请求的网站,但我希望海报能够限制帖子的可见性(即,如果他们选择了visible =“group”的选项,那么其他该组之外的用户无法看到它(只有共享相同“组”的用户才能看到该帖子)。
请帮我解释语法,我无法弄清楚如何在WHERE语句中使用AND条件。
现在,我有:
scope :visible, -> (group) { joins(:user).where.not(visible: 'group',
users:{group: group}).references(:users)}
返回与我想要的相反的东西。 但是,当我删除not时,它不会给我任何东西。
感谢。
答案 0 :(得分:0)
我认为你正在寻找的是这个。
scope :visible, -> (group) { joins(:user).where("visible <> 'group' OR (visible = 'group' AND users.group = ?)", group) }