我有带有 activescaffold 的 ruby-on-rails 应用程序来构建基于数据库结构的 GUI。用户有角色,每个角色都是一组权限。每个权限都是控制器和用户被允许在此控制器中执行或不执行的操作的组合。
# DATABASE!
create_table :rights do |t|
t.column :controller, :string, :limit => 32, :null => false
t.column :action, :string, :limit => 32, :null => false
end
create_table :rights_roles, :id => false do |t|
t.column :right_id, :integer
t.column :role_id, :integer
end
create_table :roles do |t|
t.column :name, :string, :limit => 32, :null => false
end
#MODELS!
class Role < ActiveRecord::Base
has_and_belongs_to_many :rights
class Right < ActiveRecord::Base
has_and_belongs_to_many :roles
# ROLE CONTROLLER!
class RoleController < ApplicationController
active_scaffold :role do |config|
config.columns = Array[:name, :rights]
config.columns[:rights].form_ui = :select
我目前有以下不方便的角色编辑窗口(选项没有结构化。会有更多的动作,所以会很可怕):
http://postimage.org/image/4e8ukk2px/
我想创建一个这样的辅助方法:
module RoleHelper
def rights_form_column (record, input_name)
...
end
end
这是定义为“权限”列指定输入法的表单所必需的。但是我不知道怎么写。理想的形式如下:
administration
action1(checkbox)
action2(checkbox)
configuration
action1(checkbox)
...
我知道 activescaffold 很旧,但我必须使用它...请帮助!