1

私は ROR の世界の初心者で、ActiveAdmin を使用してアーティスト ポートフォリオ Web サイトの管理パネルを設計しようとしています。アイデアは、各アーティストがログイン/パスワードを持ち、アセットを管理できるということです。

モデルは、AdminUser テーブルの has_many で設定され、リンクされたモデルの belongs_to で設定されます。たとえば、AdminUser has_many Videos です。多くのリンクされたアセットがあります。

次のようにするための最良のアプローチは何でしょうか。

  • 現在ログインしている AdminUser は、自分のアセットにしかアクセスできませんか?
  • 現在ログインしている AdminUser は、新しく作成された各アセットの 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 は、新しく作成された各アセットの admin_user_id フィールドとして設定されます。

A2: AdminUser は単なる「ユーザー」モデルです。そのため、通常の Devise の方法と同様に、ビューとコントローラーで「current_user」と呼ぶことができます。例えば

#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 の詳細については、公式 Web サイトを参照してください: https://github.com/plataformatec/devise

于 2012-03-29T08:20:00.877 に答える