rails中的单表继承和has_many

时间:2012-06-09 20:05:40

标签: ruby-on-rails has-many single-table-inheritance

我正在为游戏制作一个简单的财务应用程序。我使用单表继承对信用和借方建模,其中两者都继承自事务。但是,每个事务都属于用户:

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])
...

但是用户没有方法借记或贷记,只有交易。或者,我可以定义一个事务控制器:

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

但是那时类型为null,如果它受到大规模分配的保护,我该如何设置呢?这两种方式都有点腌渍。除了咸菜味道好。

1 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作在第二个示例中明确设置事务的类型:

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

唯一的问题是@transaction实例变量在保存并重新加载到另一个变量之前不会是Debit类型。