1

ファンジー向けのシンプルな金融アプリを作成しています。単一テーブル継承を使用して貸方と借方をモデル化しました。どちらもトランザクションから継承されます。ただし、各トランザクションはユーザーに属します。

class Transaction < ActiveRecord::Base
  belongs_to :user
end

class Debit < Transaction
end

class Credit < Transaction
end

クレジットとデビット用に別々のコントローラーを作成して、次のようにすることができます。

@debit = current_user.debits.build(params[:debit])
...
@credit = current_user.credits.build(params[:credit])
...

ただし、ユーザーにはメソッド debits または credits がなく、トランザクションのみがあります。または、単一のトランザクション コントローラーを定義することもできます。

@transaction = current_user.transactions.build(params[:transactions])

しかし、タイプはnullであり、一括代入から保護されている場合、どのように設定すればよいでしょうか? いずれにせよ、それは少しピクルスです。ピクルスがおいしいことを除いて。

4

1 に答える 1

1

次のようにして、2 番目の例でトランザクションのタイプを明示的に設定できます。

@transaction = current_user.transactions.build(params[:transactions])
@transaction.type = "Debit"
@transaction.save

これに関する唯一の問題は、 @transaction インスタンス変数が、保存されて別の変数に再ロードされるまで Debit 型にならないことです。

于 2012-06-09T21:55:22.897 に答える