Rails ActiveRecord包含“所有者”角色的关联

时间:2017-12-06 06:48:58

标签: ruby-on-rails activerecord rails-activerecord

我正在创建一个杂项跟踪器应用程序作为我的第一个Rails项目,我想知道我创建的关联是否有意义或可以改进。以下是该应用的详细信息:

  • 用户制作家务清单并成为“所有者”(即“管理员”) 那份清单。
  • 所有者可以为列表创建/编辑杂项。他们还可以“批准”其他用户完成列表中的任务。这些用户只能完成任务。
  • 所有者以及通常的管理员能力也可以完成 他们拥有的列表上的任务。
  • 所有者可以拥有多个列表。用户可以批准完成 多个清单上的任务。

以下是我粗暴的关系,我正在寻找反馈:

(型号)用户

  • has_many:lists
  • has_many:所有者,class_name:“列表”,foreign_key:“list_id”
  • has_many:家务,通过:: list

(型号)列表

  • has_many:用户
  • has_many:chores
  • belongs_to:owner,class_name:“User”,foreign_key:“owner_id”

(型号)USER_LIST

  • belongs_to:user
  • belongs_to:list

(型号)家务

  • belongs_to:list
  • has_many:用户,通过:: list

有任何危险信号吗?提前谢谢!

1 个答案:

答案 0 :(得分: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

注意:我根据rails命名约定将关联模型更改为ListsUser

如果我错过了什么,请告诉我。