0

Rails 2.3 を使用して、単純なプロジェクト コラボレーション ツールを構築しています。認証は、Restful Authentication プラグインで処理し、Role Requirement プラグインを使用してロール管理を行います。

ユーザーコラボレーションを作成する必要があります。たとえば、許可されたユーザーがログインすると、ユーザーはユーザーに属するチームを作成できるため、チームはログインしてユーザーのデータを作成/編集/更新/削除できます。したがって、すべてのユーザーは共同作業のためのチームを作成できます。

私は招待モデルで試してみました。ユーザーは、別のユーザー (invitation_id) を招待してから、(invitation_id) でコントローラー/ファインダーをフィルター処理できます。招待されたユーザーがログインすると、招待したユーザーのデータのみが表示されます。しかし、これは管理のしやすさには適さず、複雑なコード ベースが作成されます。

このユーザーコラボレーションシステムのように実装するにはどうすればよいですか? そのためのベストプラクティスは何ですか。

ありがとう

4

1 に答える 1

3

おそらく、ユーザーが使用するコラボレーションまたはプロジェクト クラスを作成しhas_and_belongs_to_manyます。

class Collaboration
  has_and_belongs_to_many :users
end

また、Collaboration の所有者とメンバーに対して個別の ActiveRecord 関係を設定することもできます (それがビジネス ロジックに適合する場合)。

例えば

class Collaboration
  belongs_to :owner, :class_name => 'User'
  has_and_belongs_to_many :members, :class_name => 'User'
end

一般に、このロジックをできるだけコントローラーから (およびモデル内に) 除外することがベスト プラクティスです。http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-modelを参照してください。

于 2009-11-15T04:04:38.837 に答える