2016-04-28 13 views
2

私は、異なるユーザーがモデルの属性に対して異なる値を提出できるようにするレールアプリケーションを開発しています。current_userを含むレールのカスタム検証

たとえば、すべてのユーザーは10を超える値を送信できますが、管理者は1桁の値も送信できます。

モデルはcurrent_userヘルパーにアクセスできないため、簡単にカスタムバリデーターを書き込むことはできません。

このような機能を実装する際のベストプラクティスは何ですか?

答えて

1

ロジックは常にcurrent_userのようにしておいてください。 しかし、あなたの要件を与えて、

私たちのコントローラはcurrent_userを知っているので、あなたのモデルにそれを伝えるコントローラでなければなりません。だからあなたのモデルにcurrent_user のため、あなたのコントローラでattr_accessorを追加

@model_obj.current_user = current_user

ような何かを今、このすべてビーイングは語りました。私は、モデルバリデーションの代替案を提案したいと思います。実際にあなたがしようとしているのは、その役割に基づいてユーザーに権限を与えることです。あなたはPunditのような宝石を使う方が良いでしょう。

1

これは、おそらくコントローラで検証を実施する場合です。厳密に言うと、これはモデルの検証ではなく、ユーザーの承認に関するものです。 Punditは承認のための素敵な宝石です。