我正在使用带有rails_admin的Rails服务器
我想在我的include_models中添加一个表,但是我不想让对其中一个/几个模型的写权限:
我的管理员如下:
# frozen_string_literal: true
RailsAdmin.config do |config|
### Popular gems integration
# == Devise ==
config.authenticate_with do
warden.authenticate! scope: :user
end
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
end
config.included_models = %w[ MyModel1
MyModel2]
end
我想添加类似的内容
config.read_only_models = %w[MyModel3, MyModel4]
有什么建议吗?
答案 0 :(得分:0)
我将答案分为两部分,因为它可能适用于不同的情况:
一般情况:
可以通过为模型添加readonly?
方法来设置一般行为。
如果该值设置为true
,则尝试更新记录将导致错误。
有关更多详细信息,请参见here。
def readonly?
true
end
ActiveRecord的基础持久性将在创建或更新任何记录之前检查readonly?
。
您还可以添加动态内容检查,例如:
def readonly?
read_only_list.include? (self.class.name)
end
RailsAdmin特定行为(第二种情况):
如果要为RailsAdmin设置特定的行为,可以创建一个特殊角色,然后使用
CanCanCan 。这是一个授权库,用于限制允许给定用户访问哪些资源。
它还可以使用Ability
类限制RailsAdmin并授予访问权限,该类根据用户角色定义不同的权限。
参见示例如何Use different Ability classes for front-end and admin
答案 1 :(得分:0)