2012-06-09 103 views
1

我正在爲funzies製作一個簡單的財務應用程序。我使用單表繼承來模擬貸方和借記,其中兩項都從交易中繼承。只有單表繼承和rails中的has_many

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

但用戶沒有方法的負債或信用,:然而,每次交易都屬於某個用戶:

class Transaction < ActiveRecord::Base 
    belongs_to :user 
end 

class Debit < Transaction 
end 

class Credit < Transaction 
end 

我可以創造的貸方和借方獨立的控制器和做這樣的事情交易。或者,我可以定義一個交易控制器:

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

但隨後的類型是空的,我應該怎麼設置,如果它的保護,質量分配?無論哪種方式都有點鹹菜。除了鹹菜味道不錯。

+1

爲什麼不在用戶處創建特定的關聯? –

回答

1

您可以明確地做設定的交易類型在你的第二個例子:

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

與此唯一的問題是,直到它的保存和重新加載的@Transaction實例變量的類型不能爲借方變成一個不同的變量。

+1

謝謝!我做了一個變化: @type = params [:transaction] .delete(:type) @transaction = current_user.transactions.build(params [:transaction]) @ transaction.type = @ type' 類型來自視圖中的隱藏字段。由於大規模分配,無法保留參數。 – greenbeansugar