簡體   English   中英

cancancan管理關系Rails

[英]cancancan manage a relationship Rails

我遇到了cancancan gem for rails的問題

gem 'cancancan', '~> 1.10'

我有四個模型:用戶,公司,位置,組

用戶:屬於公司公司:有很多位置地點:屬於公司組:屬於位置

在能力模型中,我有這個:

can :manage, Group, :location => {:id => user.company.locations.map{|l| l.id}}

創建新群組時,我被拒絕(沒有訪問權限)

我正在尋找一種允許用戶使用公司位置ID之一創建組的正確方法(注意:如果沒有cancancan,則所有工作都與所有ID相關聯,依此類推)。

為了確保我完全理解您的問題...

您是否正在尋找一種方法來限制用戶根據用戶所屬公司的位置來管理網上論壇的能力?

假設我沒錯 ,我建議使用#pluck

can :manage, Group, location_id: user.company.locations.pluck(:id)

這將收集用戶公司位置上的所有:id ,並確保用戶只能管理該集合中包含:location_id的組。

從功能上講,這與您所做的相同,但是在兩種方面更有效:

  1. 它不涉及任何不必要的Ruby邏輯

  2. 使用#pluck僅查詢位置上的:id ,而不是整個位置及其所有屬性

一般而言,每當您在Rails中訪問數據庫時,最好完全使用ActiveRecord方法。 這將有助於防止您浪費時間查詢不必要的額外信息,並消除使用Ruby重組數據的額外開銷。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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