2012-06-09 70 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