簡體   English   中英

如何限制用戶使用CanCanCan更新某些字段?

[英]How to restrict a user from updating certain fields with CanCanCan?

因此,如果我有一個用戶,並且他可以創建/更新他的服務,但是他不能:publish(bool)它們,那么從update_params哈希中跳過此字段的最佳解決方案是什么?

我發現類似的問題,但是它鏈接到從未發布過的CanCan 2.0,我想知道是否有一種方法可以使用CanCanCan解決此問題,但在其文檔中找不到任何內容。 非常感謝!

據我所知你做不到。 我將進行單獨的發布操作。 因此,我將完全省略來自表單和service_params發布。

然后我會做這樣的事情:

Class ServicesController

  def publish
    @service = Service.find(params[:id])  
    @service.update_column(:publish, true)
  end

end

然后才能

can :manage, Service
cannot :publish, Service

或者,您可以執行此操作(假設您有一個當前用戶,並且將其定義為管理員)

def service_params
  if current_user.admin?
    params.require(:service).permit(:my_field, :publish)
  else
    params.require(:service).permit(:my_field)
  end
end

因此,如果它們不是管理員,則可以從參數中忽略它。 在這種情況下,您可能希望根據是否可以更改字段來在視圖中隱藏字段。

暫無
暫無

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

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