纲要:我有一个用户模型belongs_to
状态模型(区域)。除了has_many
个用户之外,状态模型rb文件基本上是空的。 db用状态信息播种,当用户注册时,他们可以选择他们的区域;一切正常。
现在我正在尝试在我的一个控制器中使用devise的current_user
方法来检查current_user
的{{1}}是否与数组中的一个匹配。< / p>
state_id
架构:(点就在那里表示不仅仅是两条线)
class FinancesController < ApplicationController
def index
@user = current_user
if @user.state_id == ['53', '54', '60']
flash.now[:notice] = "User is from one of the accepted regions"
else
end
end
end
不幸的是它不起作用,并且即使用户是数组中可接受的值之一,也总是使用“else”。
例如,我正在测试的用户的state_id为54.在我看来,我可以使用create_table "users", force: true do |t|
.........
t.string "email", null: false
.....
.....
t.integer "state_id"
.....
end
在页面上打印“54”。
我认为问题可能在于数组<%= current_user.state_id %>
,因为我尝试在那里只有一个ID而不是数组,它似乎产生了正确的结果。也许我应该使用for循环来循环并检查数组中的每个数字(如果是这种情况)?
答案 0 :(得分:1)
您正在检查数组的字符串值。
您可能希望这样做:
if [53, 54, 60].include? @user.state_id
答案 1 :(得分:0)
使用include方法:
['53', '54', '60'].include?(@user.state_id)