2016-11-10 66 views
1

我需要更新布尔值并同时创建新记录。 我有一个名为Bank的控制器,Bank有3个属性,分别为account:string,amount:decimalwithdrawn:Boolean,客户可以在特定的天数内投入一定的金额,在达到这些天数后,他们可以提取利息金额。我需要当客户点击退出withdrawn布尔值更新为true,并且金额+利息(例如amount+10%)被创建并保存,金额+ 10%的结果还将支付一个布尔值/标志,“银行出纳员”可以支付现金付款完成后更改为paid:, true更新布尔值并同时创建新记录 - Rails

我该如何实现上述目标,我是否应该为撤销创建新的控制器和模型,以及代码如何?任何援助将不胜感激。

回答

1

无需创建新的控制器。只需在您的控制器中创建一个withdraw方法。不确定您的金额+利息究竟是什么意思,但我想您正在谈论数据库中的另一列。只需在数据库中添加诸如amount_with_interest之类的属性即可。另外,为paid添加另一列,作为布尔值。

def withdraw 
the_bank = Bank.find(params[:id]) #or something similar to get the account one way or another 
the_bank.withdrawn = true 
the_bank.amount_with_interest = the_bank.amount * 1.1 
the_bank.save 
end 

出纳员然后可以按其他一些按钮后某处付款已发送,简单地改变the_bank.paid

+0

尽可能Rails的方法和语法去,我不需要做'the_bank.update (:withdrawn,true)','the_bank.create'来保存amount_with_interest? –

+0

不一定。通过编辑页面更新模型的属性是常规的,然后发布到控制器中的更新路线,但这两个操作没有什么特别之处。我在上面的例子中所做的事实际上是创建一个新的更新操作,它只会改变你想改变的属性。至于使用the_bank.update(:withdrawn,true),这是完全有效的语法,但the_bank.create将创建一个Bank模型的新实例。我已经更新了我的答案,以包含the_bank.save这一行,这就是让这些更改生效所需的全部内容。 – borbesaur

+0

非常感谢,你的回答很好解释和准确。 –