首页 > 解决方案 > Rails WHERE--AND 条件来查找相同属性的两个或多个值

问题描述

我正在尝试实现自己的身份验证系统,登录的用户应该看到他们来自的状态的记录:

if current_user.role.name == "state_admin" && current_user.state.name == "Texas"
    @b = Staff.where(state_id: 3) 

德克萨斯州的 state_id 是 3。

但是,我想创建一个特殊豁免,德克萨斯州管理员也可以查看佛罗里达州的记录。我编写了以下代码来尝试实现这一目标:

@staffs= Staff.where(state_id: 3).or(Staff.where(state_id: 4))

当我转到索引页面时,只显示德克萨斯州的记录。我想列出德克萨斯AND州佛罗里达州的记录(state_id 4)。

我哪里错了?我已经使用了几个小时,但我似乎无法让它工作(虽然是初学者)。

标签: sqlruby-on-railsruby-on-rails-5

解决方案


正如 Florent Ferry 在评论中所说,您可以这样写:

@staffs = Staff.where(state_id: [3, 4])

也可能值得一读 Active Record:https ://guides.rubyonrails.org/active_record_basics.html


推荐阅读