我正在为游戏制作一个简单的财务应用程序。我使用单表继承对信用和借方建模,其中两者都继承自事务。但是,每个事务都属于用户:
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,如果它受到大规模分配的保护,我该如何设置呢?这两种方式都有点腌渍。除了咸菜味道好。
答案 0 :(得分:1)
您可以通过执行以下操作在第二个示例中明确设置事务的类型:
@transaction = current_user.transactions.build(params[:transactions])
@transaction.type = "Debit"
@transaction.save
唯一的问题是@transaction实例变量在保存并重新加载到另一个变量之前不会是Debit类型。