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

我哪里错了?我已经用了几个小时了,但我似乎无法让它发挥作用(尽管我是一个初学者(。

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

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

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

最新更新