2016-05-11 11 views
0

私はRails 4.2.3を使用しています。私は...そう、私は私のアプリ/モデル/ users.rbファイルでこれを持って私のユーザーにユーザが特定の役割を持っている場合、Railsのリダイレクトに問題がある

class User < ActiveRecord::Base 
    has_many :assignments 
    has_many :roles, through: :assignments 

    def role?(role) 
    roles.any? { |r| r.name.underscore.to_sym == role } 
    end 

    def admin? 
    role? "Admin" 
    end 
end 

を役割を割り当てたいが、私は私のシステムでのみユーザーでログインしたときに、私はにリダイレクトされていませんよ管理ページ(代わりに、下記の「他の」句が実行され...

def create 
    user = User.from_omniauth(env["omniauth.auth"]) 
    session[:user_id] = user.id 
    if user.admin? 
     render 'admin/index' 
    else 
     redirect_to root_path 
    end 
end 

これは、なぜ私が理解することはできません。以下は、現在、私のPostgresデータベースのデータのみです...

myproject=> select * FROM Assignments; 
id | user_id | role_id |   created_at   |   updated_at   
----+---------+---------+----------------------------+---------------------------- 
    4 |  8 |  1 | 2016-05-10 21:15:01.863456 | 2016-05-10 21:15:01.863456 
(1 row) 

myproject=> select * FROM users; 
id | provider |   uid   |  name  | oauth_token | oauth_expires_at |   created_at   |   updated_at   |   email   
----+---------------+-----------------------+---------------+-------------+------------------+----------------------------+----------------------------+------------------------- 
    8 | google_oauth2 | 177611649021871409999 | Dave A  |    |     | 2016-05-10 21:15:01.861259 | 2016-05-10 21:15:01.861259 | [email protected] 
(1 row) 

myproject=> select * FROM roles; 
id | name |   created_at   |   updated_at   
----+-------+----------------------------+---------------------------- 
    1 | Admin | 2016-04-28 19:55:43.473016 | 2016-04-28 19:55:43.473016 
    2 | User | 2016-04-28 19:55:43.492222 | 2016-04-28 19:55:43.492222 

答えて

0

あなたは文字列 "Admブロック内でroles.any?に渡されると、シンボルに一致しています。これは動作するはずです。これで

def role?(role) 
    roles.any? { |r| r.name.underscore.to_sym == role.to_s.underscore.to_sym } 
end 

はあなたがrole?

"Admin""admin"、または :adminを渡すことができます
関連する問題