rails如何在银行账户申请中添加账户模型与交易模型的关联?

How add association between account model and transaction model in bank account application in rails?

我是 rails 的新手,我正在 rails 建立银行账户申请。用户和帐户数据已经在种子中可用。用户只有一个账户,所以这里的关联是一对一的。但是一个账户可以有多个交易。所以关联是一对多的。因此,当用户点击其帐户的 'transact' 选项时,他将被定向到 debit/credit 交易的交易页面。但是一旦执行交易,交易的详细信息以及 account_id 应该存储在交易 table.

我的账户和交易代码如下: 模型帐户:

class Account < ApplicationRecord
  belongs_to :user
  has_many :transaction
end

账户管理员:

class AccountsController < ApplicationController
  def index
    @accounts = Account.all
  end
end

交易模型:

class Transaction < ApplicationRecord
  belongs_to :account
end

事务控制器:

class TransactionsController < ApplicationController
  def new
    @transaction = Transaction.new
  end

 def create
   @transaction = Transaction.new(transaction_params)
 end

 private

 def transaction_params
   params.require(:transaction).permit(:amount, :commit)
 end
 end

我在事务 table 中添加了 account_id 列。任何人都可以帮助建立协会吗? 提前致谢。

在帐户模型中更改此:

has_many: transaction to has_many: transactions

请遵循命名规则。

然后在 TransactionsController 中创建一个 before_action,如下所示。

before_action :set_account_id

def set_account_id
 @account = Account.find_by(id: params[:account_id]
end

创建交易时使用 set_account_id 方法返回的账户详细信息。

 class TransactionsController < ApplicationController
   def create
    @transaction = @account.transactions.new(transaction_params)
    @transaction.save!
   end
 end

我认为您有交易和特定账户,并且您正在通过账户进行交易。

场景 1

  1. 检查特定帐户并继续交易。 (创建视图)
  2. 交易的嵌套路由已创建,例如。对于新操作,/accounts/:account_id/transactions/new
  3. 创建过滤器,before_filter :find_account

    @account = Account.find(params[:account_id]) if params[:account_id]
    
  4. 在 TransactionsController 的新操作中,

    @transaction = @account.transactions.new
    

    您需要更新 transaction_params 以防发生变化

场景 2

如果您不创建嵌套路由,只需在视图中使用 select_list 提供您将 select account_id 的 @account_list_hash。新动作将是

    # code to pass array for account_id select_list by method account_list_hash
    @transaction = @Transaction.new

如果有进一步的说明,我会更新。