プロジェクトに Rolify gem を追加し、正常に初期化しました。私は奇妙な問題に直面していますか?
ユーザー オブジェクトには、ユーザー ロールと管理者ロールがあります。
[1] pry(#<API::V1::PostPolicy>)> current_user.roles
=> [#<API::V1::Role:0x007fb70602be48
id: "19810121-ea16-4d86-b36c-475fad0f7dec",
name: "user",
resource_id: nil,
resource_type: nil,
created_at: Thu, 02 Apr 2015 02:05:27 UTC +00:00,
updated_at: Thu, 02 Apr 2015 02:05:27 UTC +00:00>,
#<API::V1::Role:0x007fb705ee6858
id: "a51c59e2-9dd0-4838-b159-1af11f7db15d",
name: "admin",
resource_id: nil,
resource_type: nil,
created_at: Thu, 02 Apr 2015 02:05:27 UTC +00:00,
updated_at: Thu, 02 Apr 2015 02:05:27 UTC +00:00>]
管理者ロールを照会すると、奇妙な動作が見られます。
[2] pry(#<API::V1::PostPolicy>)> current_user.has_role? :admin
=> false
Pundit と Rolify を使用してポリシーを適用しようとしています。上記の出力はポリシー テストからのものです。
Ⅴ
アップデート
rolifyでUUIDを使用しています。ローリファイの移行は以下の通りです。
class RolifyCreateAPIV1Roles < ActiveRecord::Migration
def change
create_table :api_v1_roles, id: :uuid do |t|
t.string :name
t.uuid :resource_id
t.string :resource_type
t.timestamps
end
create_table(:api_v1_users_api_v1_roles, :id => false) do |t|
t.uuid :user_id
t.uuid :role_id
end
add_index(:api_v1_roles, :name)
add_index(:api_v1_roles, [ :name, :resource_type, :resource_id ])
add_index(:api_v1_users_api_v1_roles, [ :user_id, :role_id ])
end
end