2016-04-28 111 views
2

我一直在開發一個rails應用程序,我們允許不同的用戶爲模型的屬性提交不同的值。涉及current_user的Rails自定義驗證

例如,所有用戶都可以提交大於10的值,同時允許管理員提交一位數值。

由於我們現在的模型沒有權限訪問current_user幫助程序,因此您無法輕鬆編寫自定義驗證程序。

實施此功能的最佳實踐是什麼?

回答

1

總是建議在模型之外保留像current_user這樣的邏輯。 但是根據您的要求,

那麼,因爲我們的控制器知道current_user那麼它應該是控制器告訴您的模型。

所以在模型中添加attr_accessorcurrent_user 並在控制器做類似

@model_obj.current_user = current_user

現在,這一切都這樣說。我會建議使用替代模型驗證。因爲實際上你要做的是根據用戶的角色授予用戶權限。你最好使用像Pundit這樣的寶石。

1

這可能是您在控制器中執行驗證的情況。嚴格地說,這不是關於模型驗證,而是關於用戶授權。 Pundit是一個很好的授權寶石,或者你可以推出自己的。