rolify と activeadmin の gem を使用しています。デフォルトでは、ロールモデルを作成します:
#models/role.rb created by rolify
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource, :polymorphic => true
scopify
end
これは schema.rb です:
#db/schema.rb
create_table "roles", :force => true do |t|
t.string "name"
t.integer "resource_id"
t.string "resource_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "roles", ["name", "resource_type", "resource_id"], :name => "index_roles_on_name_and_resource_type_and_resource_id"
add_index "roles", ["name"], :name => "index_roles_on_name"
役割を管理するには、アクティブな管理者に役割モデルを登録しました。
$rails generate active_admin:resource Role
これはアクティブな管理者の役割です:
#app/admin/Role.rb
ActiveAdmin.register Role do
end
アクティブな管理者 Web ページに移動し、[ロール] リンクをクリックすると、ブラウザにテーブルにロールが表示されますが、問題ありません。ただし、表示されるフィールドは次のとおりです。
#http://localhost:3000/admin/roles
Id => 1
Name => "john"
Resource_Type => "RESOURCE" #ok,but I would like to see also resource_id
Created At => "December 18, 2013 18:33"
Updated At => "December 18, 2013 19:33"
問題は、欠落しているフィールド resource_id です。この関係は多態的であるため、resource_id と resource_type も表示されるはずです。
何かアイデアはありますか?