簡體   English   中英

Rails Cancancan-授權嵌套關聯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM