したがって、Rails の STI (単一テーブル継承) が厄介であることは誰もが知っています。データ モデルが雑然とし、データベースが最適化されていないからです。
しかし、PostgreSQL は継承を非常に美しく処理しているようです。
痛々しいほど広いテーブルと「型」列の代わりに Postgres 継承を利用しながら、Rails のきれいな STI API を取得する方法はありますか?
したがって、Rails の STI (単一テーブル継承) が厄介であることは誰もが知っています。データ モデルが雑然とし、データベースが最適化されていないからです。
しかし、PostgreSQL は継承を非常に美しく処理しているようです。
痛々しいほど広いテーブルと「型」列の代わりに Postgres 継承を利用しながら、Rails のきれいな STI API を取得する方法はありますか?
しかし、PostgreSQL は継承を非常に美しく処理しているようです。
本当に?マニュアルの小さな文字をよく見ましたか? 例えば:
capitals
extends cities
。あなたのaddress
テーブルは を参照したいcities
です。できる。ただし、a 付きの no アドレスはcapital
使用できます。これら 2 つのことは、小規模な "Hello World" プロジェクト以外のあらゆる場合に非常に重要です。したがって、PostgreSQLの継承を使用して生産的なものを実装できるとは想像できません。
要するに、あなたが今達成しようとしているもののためのきれいな STI API はありません。
私は実際に約1年前にそれを調べ、いくつかの理由でそれは良い考えではないという結論に達しました:
ほとんどの IT の問題は、実際には次のようになります。労力と利益です。
あなたの場合、次の質問を自問する必要があります。
PS:
また、アプリで STI を構造化するための簡単なヒント: ProductCategory、CommentCategory、PhoneCategory、ClientCategory のように STI を使用する多くのモデルがあり、それらはすべて Cateogory から継承されていることがわかった場合、モデル ディレクトリ内のフォルダーにそれらを整理する傾向があります。次に、application.rbに次の行を追加します。config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/**}')]