2011-12-25 14 views
0

まず、メリークリスマス!私がしようとしてきたことは、実際には(理論的に)単純です。私はそれがODMであるとしてMongoidと動作するDevise認証システムを持っています。私がしたいのは、あるユーザーを他の "子供"ユーザーの "親"とする別のユーザーと関連付けることです。ペアレンタルコントロールを考える - アカウントを持っている親が1つあり、すべての子が親アカウントに関連付けられています。次に、親アカウントには特別な「親」ロールがあり、子ロールに対して親の制御権(または管理権)が与えられます。ここで同じコンセプトは、ODMとしてMongoidとDeviseでこれをエミュレートしようとしています。 Can Canは後で認可のために使用されます。モンゴイドとデビーズの「親」と「子供」ユーザー

私が考えた最初の解決策は、子供を親アカウントに埋め込むことでした。私は利益が見えないので埋め込みでこれを解決したくありません。 埋め込みでこの問題を解決するメリットについて誰かが私に教えてもらえたらよろしいですか?代わりにhas_many :usersのようなものを考えていました。これが問題になる可能性がある場所は、Devise + Mongoidに多くのユーザーがいますか?

私がやっていたもう一つのことは、親モデルと生徒モデルをUserモデル(Deviseがあるモデル)から継承していたことです。私はそれがDevise 1.x(そして将来は2.x)で動作するかどうかわかりませんでした。私はDeviseモデルを継承していると考えています。 これまでに試したことがある場合は、私の経験を教えてください。

長引く説明をして、あなたの考えは?レール3.1.xへの使用

- ロバート

、1.5.xの工夫、及びMongoidの2.3.x以降

+0

あなたは本当にdeviseを使う必要がありますか?認証はレール3.1+で自分で行うのは本当に簡単です。あなたが夢中にならないようにしようと思えば、モデルがあなたにとって最も理にかなったものを作ることができます。 –

+0

タイラーあなたの思考は私のラインに沿っていた!私のWebアプリケーションのより複雑な部分を設計する長い一日の後、私はDeviseがこのアプリケーションのために狭すぎることに気付きました!私は今、最初からいくつかの認証を担当するようになっています! –

+0

よかった!それはあなたの質問に答えるべきではないということを意味するものではありません。私は助けてくれる人にはあまり精通していません。申し訳ありません。しかし、幸運。 –

答えて

1

あなたは区別するために別の層を与えることができるSTI(単一テーブル継承)を使用することができユーザーの2つのカテゴリー。

あなたは以下のようにこれを行うことができます(のActiveRecordに基づいて、について説明を..あなたのようにcgangeし、必要な時にすることができます):このため

class User < ActiveRecord::Base 
end 

class ParentUser < User 
end 

class ChildUser < User 
end 

あなたはUserモデルにtype列を追加する必要があります。あなたがParentUserを作成したい時はいつでも

だから、 parent_user = ParentUser.create()

、ここhttp://rohitsharma9889.wordpress.com/2010/11/29/implement-sti-single-table-inheritance-in-your-rails-models/

ます。また、これを参照することができ

child_user = ChildUser.create()

より詳細なブログ記事を子ユーザを作成するための操作を行うことができますここの質問Rails devise registration form when having STI

+0

私は最終的にこのタイプのオプションに遭遇しましたが、私の質問で議論した機能を実装する時間がありませんでした。質問に答えることに感謝します。私は夢中ではなく、STIは実行可能な選択肢であることを示しています。再度、感謝します。 –

関連する問題