current_user关联似乎在视图中工作,但不是控制器

时间:2014-01-23 04:00:33

标签: ruby-on-rails arrays devise

纲要:我有一个用户模型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循环来循环并检查数组中的每个数字(如果是这种情况)?

2 个答案:

答案 0 :(得分:1)

您正在检查数组的字符串值。

您可能希望这样做:

if [53, 54, 60].include? @user.state_id

答案 1 :(得分:0)

使用include方法:

['53', '54', '60'].include?(@user.state_id)