1

我是 ROR 世界的新手,我正在尝试使用 ActiveAdmin 为艺术家作品集网站设计管理面板。这个想法是每个艺术家都有一个登录名/密码并且可以管理资产。

模型在 AdminUser 表中使用 has_many 设置,在链接模型中使用 belongs_to 设置。例如,AdminUser has_many Videos。有很多关联资产。

最好的方法是什么,以便:

  • 当前登录的 AdminUser 只能访问他自己的资产?
  • 当前登录的 AdminUser 设置为每个 newluyy 创建的资产的 admin_user_id 字段?

非常感谢您的帮助!

4

1 回答 1

0

我不确定这个答案是否及时。

Q1。当前登录的 AdminUser 只能访问他自己的资产。

A1。使用 cancan 作为您的授权框架。默认情况下,ActiveAdmin 不为您提供授权能力。所以,关键代码可能如下所示:

# in your app/models/ability.rb
class Ability 
  include CanCan::Ability
  def initialize(user)
    can :read, Asset, :admin_user_id => user.id
  end
end 

更详细的Cancan使用步骤(非常简单,15分钟搞定),请参考:https ://github.com/ryanb/cancan

Q2。当前登录的 AdminUser 设置为每个 newluyy 创建的资产的 admin_user_id 字段。

A2:AdminUser 只是一个“用户”模型。因此,您可以在视图和控制器中将其称为“current_user”,就像常规的 Devise 方式一样。例如

#in your controller
def create_xx
  # save the admin_user_id to the newly created asset.
  Asset.create(:admin_user_id => current_user.id)
end

Devise的更多详细信息,请参见其官网:https ://github.com/plataformatec/devise

于 2012-03-29T08:20:00.877 回答