私は、異なるユーザーがモデルの属性に対して異なる値を提出できるようにするレールアプリケーションを開発しています。current_userを含むレールのカスタム検証
たとえば、すべてのユーザーは10を超える値を送信できますが、管理者は1桁の値も送信できます。
モデルはcurrent_userヘルパーにアクセスできないため、簡単にカスタムバリデーターを書き込むことはできません。
このような機能を実装する際のベストプラクティスは何ですか?
私は、異なるユーザーがモデルの属性に対して異なる値を提出できるようにするレールアプリケーションを開発しています。current_userを含むレールのカスタム検証
たとえば、すべてのユーザーは10を超える値を送信できますが、管理者は1桁の値も送信できます。
モデルはcurrent_userヘルパーにアクセスできないため、簡単にカスタムバリデーターを書き込むことはできません。
このような機能を実装する際のベストプラクティスは何ですか?
ロジックは常にcurrent_user
のようにしておいてください。 しかし、あなたの要件を与えて、
私たちのコントローラはcurrent_user
を知っているので、あなたのモデルにそれを伝えるコントローラでなければなりません。だからあなたのモデルにcurrent_user
のため、あなたのコントローラでattr_accessor
を追加
が
@model_obj.current_user = current_user
ような何かを今、このすべてビーイングは語りました。私は、モデルバリデーションの代替案を提案したいと思います。実際にあなたがしようとしているのは、その役割に基づいてユーザーに権限を与えることです。あなたはPunditのような宝石を使う方が良いでしょう。
これは、おそらくコントローラで検証を実施する場合です。厳密に言うと、これはモデルの検証ではなく、ユーザーの承認に関するものです。 Punditは承認のための素敵な宝石です。