我是Rails的新手,正在构建Rails的银行帐户应用程序。用户和帐户数据已经在种子中可用。用户只有一个帐户,因此这里的关联是一对一的。但是,一个帐户可以有多个交易。因此,关联是一对多的。因此,当用户单击其帐户的“交易”选项时,他将被转到交易页面以进行借记/贷记交易。但是一旦执行了交易,交易的详细信息以及account_id应该存储在交易表中。
我的帐户和交易代码如下: 示范帐户:
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
我在交易表中添加了account_id列。有人可以帮忙建立协会吗? 预先感谢。
答案 0 :(得分:0)
在“帐户”模型中更改此内容:
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 :(得分:0)
我认为您具有特定帐户的交易,并且正在通过帐户进行交易。
场景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
Scenorio-2 :
如果不创建嵌套路由,只需提供@account_list_hash,即可在视图中使用select_list选择account_id。而新动作将会
# code to pass array for account_id select_list by method account_list_hash
@transaction = @Transaction.new
我会在进一步澄清的情况下进行更新。