0

私は Ruby on Rails を使用しており、認証に工夫を凝らしています。ユーザー(顧客)モデルとビジネスモデルがあります。ユーザー(顧客)に特定の事業を通じてサインアップしてもらい、特定の事業に所属してもらいたい。ビジネスには多くのユーザー (顧客) がいますが、ユーザーは 1 つのビジネスにしか属しません。私は最終的に、企業が独自のドメインのサブドメインを使用して独自の ID に対応できるようにしたいと考えましたが、その時点に到達したので、それにアプローチする方法がわかりません..

正直なところ、私はまだ高校生で、すべてがどのようにこのようなものになるのかよくわかりません。そのため、このアプリを企業にライセンス供与することを計画しています (このアプリを開発する前に、前払いした企業がいくつかあります)。各企業のデータは、他の企業から分離する必要があります。一部の企業はドメインをまったく持っていないため、サーバーでサブドメインを使用する必要があります. 一部の企業はウェブサイトを持っているため、その企業のドメインを通じてサブドメインを使用したいと考えています。

複数のデータベースを使用する方が断然良いと考えています。正直なところ、データベース構造に関する知識は非常に限られています。これを展開する最良の方法かもしれないと考えていた個別のアプリを個別に実行することは可能だと思います。また、おそらく開発/保守が最も簡単ですか?

私の質問は、複数のデータベースを実行することと、個別のアプリを実行することのトレードオフは何ですか? そして、これを実際に行う方法に関する詳細情報はどこで見つけることができますか? また、これらのドメインを転送する方法、または私がしなければならないことについて、誰かが私を正しい方向に導くことができますか?

また、私の質問が十分に明確でない場合はコメントしてください...そして長くなってすみません笑。

4

2 に答える 2

2

複数のデータベースの道をたどると、簡単に戻ることはできません。そのため、そうする十分な理由があるはずです。深刻なスケーリングの問題がない限り、その決定を可能な限り遅らせ、代わりに標準的な関係を使用してデータベースを分割することをお勧めします。

Rails では、ほぼすべてのものにスコープを適用できるため、これを簡単に行うことができます。たとえば、ビジネス モデルを作成し、他のオブジェクトを直接フェッチする代わりに、常に特定のコンテキストでそれを行います。実際には、これは次のようになります。

@orders = @business.orders.paginated

@businessを使用して正しいモデルにロードされる親クラスの子孫をすべての「ビジネス指向」コントローラーにすることができるbefore_filterため、これを多くの異なるコントローラーに複製する必要はありません。

いつでもデータベースを分割したい場合は、business_idまたはその他の派生関係に基づいてテーブルを分離することでそれを行うことができます。

これはほとんどのアプリケーションで非常にうまく機能し、適度に拡張できることがわかりました。スケーリングの最初のステップは共有ではなくレプリケーションであることを忘れないでください。多数の読み取り専用レプリカを使用すると、アプリケーションを内部的に複雑にすることなく、読み取りパフォーマンスを大幅に向上させることができます。

于 2012-04-16T23:34:39.450 に答える
1

これはトピックに関する非常に良い投稿ですhttp://www.robbyonrails.com/articles/2009/01/11/subdomain-accounts-with-ruby-on-rails-explained

http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-railsもご覧ください。

于 2012-04-17T01:30:26.193 に答える