[英]Rails Cancancan - authorizing nested associations
我有以下型號:
class Party
belongs_to :user
has_many :party_co_hosts
accepts_nested_attributes_for :party_co_hosts
has_many :co_hosts, through: :party_co_hosts
class CoHost
belongs_to :party
belongs_to :co_host, foreign_key: :user_id
class User
參與方應屬於用戶(主持人),主持人可以分配共同主持人,該共同主持人應能夠編輯該參與方的詳細信息,但不能添加/刪除共同主持人。 我正在努力用Cancancan定義這種能力。
can :update, Party, user_id: user.id
這使主持人全權以赴做自己想參加的聚會-很好。
can :update, Party do |p|
p.co_hosts.include? user
end
這將使共同主持人可以編輯該聚會,這也很好,但是我不希望它包含嵌套的party_co_hosts
關聯。
我是否應該刪除accepts_nested_attributes_for
並通過單獨的控制器強制創建party_co_hosts
,而不是允許在父級中嵌套嵌套的關聯? 我只是想念的其他想法?
只是一個想法可能會有所幫助,我正在考慮針對您的問題的新設計
class User < ApplicationRecord
has_many :roles
has_many :parties, through: :roles
end
class Role < ApplicationRecord
belongs_to :user
belongs_to :party
end
class Party < ApplicationRecord
has_many :roles
has_many :users, through: :roles
end
角色表具有字段user_id,party_id和title作為字符串 ,標題內容可以作為來賓或共同主持人,如果角色作為共同主持人,則用戶可以編輯聚會模型,如果作為來賓只能閱讀等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.