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:
- 检查特定帐户并继续交易。 (创建视图)
- 交易的嵌套路由已创建,例如。对于新操作,
/accounts/:account_id/transactions/new
创建过滤器,before_filter :find_account
@account = Account.find(params[:account_id]) if params[:account_id]
在 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
如果有进一步的说明,我会更新。
我是 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:
- 检查特定帐户并继续交易。 (创建视图)
- 交易的嵌套路由已创建,例如。对于新操作,
/accounts/:account_id/transactions/new
创建过滤器,
before_filter :find_account
@account = Account.find(params[:account_id]) if params[:account_id]
在 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
如果有进一步的说明,我会更新。