簡體   English   中英

使用沒有attr_accessible的枚舉

[英]Using enum without attr_accessible

為了在Rails 4.2項目上向后兼容,我使用protected_attributes gem。 User模型上,我有以下聲明

 enum access_level: [:general, :marketing, :admin]

如果我嘗試做user.admin! ,出現以下錯誤:

ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes for User: access_level

這可以通過聲明來解決

attr_accessible :access_level

但我不想讓用戶潛在地賦予自己管理員角色。 有沒有一種簡單的方法可以繼續使用protected_attributes gem和enum,並防止用戶授予自己管理員角色。

我的解決方法如下。 我確保只有:admin角色可以對access_level進行大量分配;

attr_accessible :access_level, as: :admin

然后定義以下方法

  def set_admin
    update({access_level: 2}, as: :admin)
  end

用來代替admin! 所有其他只讀枚舉方法,例如admin? Admin.admin工作。 可以為其他枚舉定義類似的方法。 當應用程序升級為使用strong_parameters時,應該很容易進行搜索並替換為使用admin!

暫無
暫無

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

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