0

Rails プロジェクトのドキュメント モデルの関係/関連付けを設定する方法を見つけようとしています。ユーザーモデルがあり、ユーザーはお互いに友達になることができます(友情モデル)。

ここで、ユーザーが特定の友人を招待 (アクセスを許可) して、Google ドキュメントと同様にこれらのドキュメントを変更および編集できるようにしたいと考えています。

これは、この問題に対する私の現在のアプローチです。

基本的に友人のサブセットである「グループ」と呼ばれる新しい関係モデルを作成します。ドキュメントはユーザーに属し、ドキュメントはグループに属します。その後、ユーザーは友人をこれらのグループ関係に招待でき、これらのグループを通じてドキュメントにアクセス/変更できます。

したがって、ユーザーには多くのグループがあり、グループは多くのユーザーに属しています。

私の質問:

  1. この問題に対するより良いアプローチはありますか?
4

1 に答える 1

0

「メンバーシップ」結合テーブルを検討することもできます。それで:

Group >- Membership -< User

...要件は、一部のユーザーには他のユーザーにはない能力(編集)があるためです。そこからあらゆる種類のオプションがあります。たとえば、STIは次のようになります。

class Membership < ActiveRecord::Base
  ...general membership functions
end

class Editor < Membership
   ...editor specific code...
end

class Reviewer < Membership
   ...reviewer specific code...
end

そして、コントローラークラスは次のようなものです

class MembershipController
  def create invitation
    if invitation.for_editor?
      # assuming invitation has one group, and group_memberships method that returns group.memberships
      invitation.group_memberships.create! user: current_user
    else
      invitation.group_memberships.create! user: current_user
    end
  end
end

例として、STIのあなたの意見に応じて。

https://github.com/scambra/devise_invitable

もっとアイデアがあるかもしれません。

于 2012-04-08T04:36:06.063 に答える