Rails WHERE--AND 条件查找同一属性的两个或多个值

Rails WHERE--AND condition to find two or more values of the same attribute

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

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) 的记录。

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

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

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

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