ActiveScaffold(以下简称as)是rails的一个插件,用于生成比原生的scaffold更华丽的ajax数据操作界面。
但是as的文档可以说非常不详细!很多时候需要靠经验去猜。因此记录一下。
- controller的action访问控制(在controller文件)
定义#{action}_authorized?,例如create_authorized?.在文档中遍寻不到as到底有那些action,结果未果(当然可以看as的源代码,但是这样也太。。。。了)。
action可以是 create、list
、 search
、 show
、 update
或 delete
model的crud访问控制(在model文件)
定义authorized_for_#{crud_action}?,例如authorized_for_destroy?
其中的crud_action是create、
read
、 update
或 destroy
之一。
字段级的访问控制(在model文件)
#{column_name}_authorized_for_#{crud_action}?---控制在某个crud操作时对某个字段进行控制
#{column_name}_authorized-----------------------控制在任何crud操作时对某个字段进行控制
让他们生效的方法:
在application.rb中添加如下
- ActiveScaffold.set_defaults do |config|
- config.security.current_user_method = :current_user
- # 没有显示设置存取权限时对应用的访问许可默认
- config.security.default_permission=true
- end
-
- #一个供activescaffold使用的认证回调
- def current_user
- if session[:user_id]
- User.find(session[:user_id])
- else
- flash[:notice] = '登录先!'
- redirect_to(:controller => "user", :action => "login")
- end
- end