0

Devise に単一の User モデルを作成させ、異なるロールを別のモデルにしようとしています。私の User モデル (rails g devise User から) には、電子メール、名、姓、および役割フィールドがあります。

役割は、管理者、観客、競技者です。そこで、すべて User モデルを継承する管理者、観客、および競合他社のモデルを作成しました。

デバイスと複数の「ユーザー」モデルからのトップの回答に従い、ユーザーを作成できます。ただし、競合他社のモデルの移行には、コンテスト名や場所など、他のモデルには必要のない他の情報も含まれています。Competitor.create() を実行し、デバイス ユーザーを作成するために必要な情報を入力すると、コンテストの名前と場所について競合モデルに null 制約があるにもかかわらず、ユーザーがデータベースに格納されます。

Spectator.all を実行すると、最近作成された競合他社のデータが表示されます。

私の質問は、コンテストの名前と場所が提供されない限り、競合他社のユーザーが作成されないように、これをどのように設定すればよいかということです。

もう 1 つの質問は、Spectator.all を実行すると、競合他社の情報が表示されるのはなぜですか?

4

2 に答える 2

1

複数のユーザーに対してdeviseを使用するためのはるかに優れた方法があります。

ローリファイジェムを使う

これにより、開発がはるかに簡単になり、より迅速かつ安全になります。質問「シングルユーザーモデルと各ロールには個別のモデルがあります」の要件に従って構成を行うことができます

Rolify gem開発者によるRolify gem + Deviseの使い方のチュートリアル

于 2013-09-12T18:19:56.570 に答える
1

認証システムが必要な場合は、Ryan Bates によって作成されたCanCanを使用してください。CanCan を使用すると、多くの役割を持つことができます。デバイスで問題なく使用しています。役割ベースの承認個別の役割モデルを参照してください。CanCan については、このScreenCastを確認してください。

于 2013-09-12T20:46:28.143 に答える