2017-12-06 14 views
0

私は最初のRailsプロジェクトとして雑用追跡アプリケーションを作成しています。私が作成したアソシエーションが意味をなさないか、改善できるかどうかは疑問です。ここではアプリの内容は以下のとおりです。Rails ActiveRecord "owner"ロールを含むアソシエーション

  • ユーザーは雑用のリストを作成し、 そのリストの「所有者」(すなわち「管理者」。)となります。
  • オーナーはリストの雑用を作成/編集できます。彼らはまた、リスト上のタスクを完了するために、他のユーザーを「承認」することができます。これらのユーザーは、できる唯一の完全な作業。
  • 所有者、通常の管理能力に加えて、することができますまた、彼らが所有し、リスト上の完全な タスク。
  • 。。所有者は

ユーザーが複数のリストに タスクを完了するために承認することができ、複数のリストを所有することができ、ここで私は、私が上のフィードバックを探していていることが荒れてきた関係です:

(モデル)ユーザー

  • にhas_many:リスト
  • にhas_many:所有者、CLASS_NAME:「リスト」、FOREIGN_KEY:「LIST_ID」
  • にhas_many:雑用、経由:リスト

(モデル)一覧

  • にhas_many:ユーザー
  • にhas_many:雑用S
  • belongs_toの:所有者、CLASS_NAME:「ユーザー」、FOREIGN_KEY:「OWNER_ID」

(モデル)User_List

  • belongs_toの:ユーザー
  • belongs_toの:リスト

(モデル)chore

  • belongs_toの:リスト
  • にhas_many:リスト

どれ赤い旗:?を通じてユーザー、前もって感謝します!

答えて

0

私はこのようなものだろう:

# user.rb 
class User 
    has_many :lists_users 
    has_many :lists, through: :lists_users 
    has_many :chores, through :lists 
end 

# list.rb 
class List 
    has_many :lists_users 
    has_many :users, through: :lists_users 
    has_many :chores 
end 

# lists_user.rb 
class ListsUser 
    belongs_to :user 
    belongs_to :list 

    # field (Representational, add it in database) 
    :user_role 
    - member (can view) 
    - collaborator (can mark complete) 
    - owner (can do everything) 
end 

# chore.rb 
class Chore 
    belongs_to :list 
end 

注:私は命名規則レールごとにListsUserに関連モデルを変更しました。

私が何かを忘れた場合は教えてください。

+0

これは意味があります。ユーザーは多くのリストに属することができますが、そのリストの役割は1つだけなので、ユーザーの代わりにListUsersに役割列を追加できます。 – Mary

+0

はい、まさに私がListUsersにroleカラムを追加した理由です。 –

関連する問題