3

私は、STI に完全に適していると思われるモデルとテーブルを持っています。私のテーブルは呼び出されFinances、収入と支出の 2 つのタイプがあります。他に、、 、typeの 3 つの列があります。descriptionamountdate

ハッキングが必要なため、Rails で STI を使用するのは非常に緊張しています。私は Rails に慣れていないため、コードをハックすることはできません。動いていても、よくわかりません。危険そうです。

私の質問は、STI を使用しない場合、モデル、コントローラー、ビューをどのように設定すればよいですか? モデル内の項目をグループ化するためのベスト プラクティスはありますか? Finances.where("type = 'Income'")または、ビューを設定する前に行うだけですか?

編集:作業中のコードを表示する要点を作成しました。実行すると、次のエラーが表示されます。

undefined method `incomes_path' for #<#<Class:0x007fbc95f60b40>:0x007fbc93883220>
4

2 に答える 2

5

まず、RailsはSTIを使うのが標準なので、緊張する必要はありません。そして、「ハッキング」の必要はありません。これは、多くの開発者によって非常にうまく使用されています。これまで見てきたように、ネット上でチュートリアルや一般的な情報を見つけることができます。

一方、STI を使用しないことにした場合は、
(a) 独自のテーブルを持つ完全に分離されたモデルを使用するか、( b) カスタムの " STI- 」のような動作を手で。2 番目のオプションは、Rails についてさらに学ぶために少なくとも興味深いものになる可能性があります。

たとえば、モデルでは、次のようFinancesにスコープを定義しますincomes

scope :incomes, where(:type => 'Income')

その後、行うことができますFinances.incomes

次に、タイプの 1 つだけに適用されるメソッドがある場合は、すべてのレコードが実質的に必要なタイプであることを確認する必要があります。

個人的には、STI を使用することをお勧めします。多くの機能を無料で手に入れることができ、Rails のやり方でそれを行っています。たとえば、他の開発者があなたのコードを読んでいると想像してみてください。彼らは、なぜ STI を使用しなかったのかを自問し、無知のせいにし、必要に応じて STI を使用してリファクタリングします。

于 2013-03-05T07:33:33.667 に答える
0

このような継承構造を使用している場合は、STI が最適です。を使用する必要はありませんFinances.where("type = 'Income'")。を簡単に使用できますIncome.all。これらの投稿が役に立ったら参照してください。 http://www.therailworld.com/posts/18-Single-Table-Inheritance-with-Rails http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance /

于 2013-03-05T05:10:18.503 に答える