2014-01-23 4 views
0

Изложение: У меня есть модель пользователя, которая belongs_to модель государства (региона). Файл модели состояния rb в основном пуст, за исключением: has_many пользователей. В db содержится информация о состоянии, и когда пользователь регистрируется, они могут выбрать свой регион; все работает нормально.Связь current_user, похоже, работает, но не контроллер

Теперь я пытаюсь использовать метод current_user DEViSE в одном из моих контроллеров, чтобы проверить, если current_user «s 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 

схемы: (точки только там, чтобы указать, что есть больше, чем просто две строки)

create_table "users", force: true do |t| 
    ......... 
    t.string "email",        null: false 
    ..... 
    ..... 
    t.integer "state_id" 
    ..... 
    end 

К сожалению, это не работает, и всегда будет использовать «еще», даже если пользователь имеет одно из принятых значений в массиве.

Например, пользователь, с которым я тестирую, имеет state_id из 54. На мой взгляд, я могу использовать <%= current_user.state_id %>, который напечатает «54» на странице.

Я считаю, что проблема может быть в массиве ['53', '54', '60'], потому что я попробовал только один идентификатор вместо массива, и он, казалось, дал правильные результаты. Возможно, я должен использовать цикл for для циклического перехода и проверки каждого числа в массиве, если это так?

ответ

1

Вы проверяете значение строки от массива.

Вы, вероятно, хотите сделать это вместо того, чтобы:

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

Спасибо, мне пришлось удалить «» кавычки из разных чисел и кажется, но теперь он работает хорошо. –

Смежные вопросы