モデルを次のように構造化する方法を考え出すのに問題があります。
私は Devise を通じてユーザーを持っています - ユーザーは (特に) セールス、管理者、クライアントの役割を持つことができます。これは、Role モデルを使用して HABTM を介して設定されます。メソッドをセットアップしたので、次のことができます
user.is? :Client
必要なものは次のとおりです。
- 販売の役割を持つユーザーは、任意の数のクライアントを持つことができます。
そのため、SalesPerson がログオンすると、User.clients を実行して、関連するすべてのクライアントを取得できます。
- クライアントの役割を持つユーザーは、クライアントを 1 つだけ持つことができます。
新しいクライアントがオンラインでサインアップすると、デバイスを介してユーザーを作成し、作成したユーザーにリンクされたネストされた値を介してクライアントを作成したいと考えています。
- User モデルを使用して、クライアントには 1 つの SalesAgent が必要です。
クライアントを表示すると、SalesAgent を選択するためのドロップダウンが表示されるはずです。これは、上記のように User モデルを使用する必要があります。
- クライアントは、User クラスを使用して、Client の役割を持つ Devise User を 1 つだけ持つ必要があります。
クライアントは、devise を介してログオンして、詳細にアクセスしたり、注文を追跡したりできる必要があります。
ご覧のとおり、これは信じられないほど混乱を招くものであり、これを実現する最善の方法が何であるかはわかりません。私が考えることができる唯一のことは、ユーザーとクライアントの間で HABTM を使用し、それを機能させるためにフォームに参加してハックすることです。これを行うより良い方法はありますか?私はおそらく使用して見てきました
has_one :sales_agent, :class_name => "User"
しかし、それを機能させることはできません。:/