Ruby on rails 在Rails 4中创建另一个模型的多个不同实例,而无需进行不必要的耦合
拥有一个ActiveRecord模型的最佳实践是什么?该模型根据分配的值生成单独模型的实例?我担心我的模型彼此“了解”太多,编写测试变得越来越困难,我正在寻找解决这个问题的正确“Rails方法” 从本质上讲,第一个模型是一个规范,用于确定实例的数量以及分配给另一个模型的这些实例的属性。我希望能够自由地更改该规范或单个实例 我正在为我的公司创建一个预算应用程序。其思想是将现金流作为一系列交易进行跟踪,这些交易由我的Ruby on rails 在Rails 4中创建另一个模型的多个不同实例,而无需进行不必要的耦合,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,拥有一个ActiveRecord模型的最佳实践是什么?该模型根据分配的值生成单独模型的实例?我担心我的模型彼此“了解”太多,编写测试变得越来越困难,我正在寻找解决这个问题的正确“Rails方法” 从本质上讲,第一个模型是一个规范,用于确定实例的数量以及分配给另一个模型的这些实例的属性。我希望能够自由地更改该规范或单个实例 我正在为我的公司创建一个预算应用程序。其思想是将现金流作为一系列交易进行跟踪,这些交易由我的交易模型表示 我不希望用户必须手动输入每笔交易(但我希望他们能够在以后根据需要编辑每
交易模型表示
我不希望用户必须手动输入每笔交易(但我希望他们能够在以后根据需要编辑每笔交易),因此我创建了CashRevenue
和CashExpense
模型,用户可以在其中输入诸如开始日期之类的内容,将结束日期和增长率持久化到数据库,然后触发非ActiveRecord模型TransactionBuilder
,该模型处理信息并调用Transaction.new()
正确的次数并正确设置属性
为了实现这一点,我有CashRevenue
和CashExpense
调用TransactionBuilder。build\u transactions(self)
分配实例变量,调用一个方法删除与调用对象关联的任何现有事务(如果是更新操作)
由于收入交易在应用程序中的处理方式与费用不同,因此我在创建之前通过执行@cashflow\u type=cashflow\u item.class.to\u s
检查类型
然后,它按如下方式创建事务:
def self.add_transactions
number_of_occurences.times do
add_transaction
end
end
def self.add_transaction
transaction = Transaction.new()
if @cashflow_type == "CashExpense"
transaction.cash_expense_id = @cashflow_item.id
else
transaction.revenue_id = @cashflow_item.id
transaction.planned_number_of_customers = get_number_of_customers
transaction.planned_arpu_amount = get_arpu_amount
end
transaction.planned_amount = get_transaction_amount
transaction.planned_date = get_transaction_date
transaction.edit_method = "SYSTEM"
transaction.user_id = @cashflow_item.user_id
if transaction.save!
@last_transaction = transaction
end
有没有更好的方法来构建我的应用程序,以实现相同的任务,同时减少模型之间的紧密耦合?我期望这个应用程序在复杂性上快速增长,所以希望尽可能保持模块化
我的应用程序模型的Railroady图:
任何帮助都将不胜感激